【问题标题】:Search suffix word. Solr 4.5.1搜索后缀词。索尔 4.5.1
【发布时间】:2013-11-15 07:33:56
【问题描述】:

如何搜索单词后缀?我正在使用 Solr-4.5.1。 使用 Solr-3.6.2 我已经在 schema.xml 中指出: 过滤器 class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="50" side="back" 在 solr-4.5.1 中不起作用。 谢谢。

【问题讨论】:

  • EdgeNGramFilterFactory 包含在 solr 4.5.1 中。什么不工作。你能说得更具体一点吗?
  • 我在 solr-3.6.2 中使用了过滤器 class= "solr.EdgeNGramFilterFactory" minGramSize = "2" maxGramSize = "50" side = "front"。如果我添加架构 solr-4.5.1.这个过滤器,控制台包括: ERROR org.apache.solr.servlet.SolrDispatchFilter – null:java.lang.IllegalArgumentException: Side.BACK 从 Lucene 4.4 开始不再支持,前后使用 ReverseStringFilter

标签: solr


【解决方案1】:

我认为你必须像这样使用ReverseStringFilterFactory

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" catenateWords="1" catenateAll="1" preserveOriginal="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
    <filter class="solr.ReverseStringFilterFactory" />
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
    <filter class="solr.ReverseStringFilterFactory" />
  </analyzer>
  ...

【讨论】:

  • 如果这解决了您的问题,请点击我的答案下方的复选标记,将您的问题标记为已解决(您也可以投票支持我的答案;))
  • 我不认为这是正确的。在彼此之后使用 2 EdgeNGramFilterFactory 将导致第一个令牌的所有令牌也受第二个令牌的约束,从而产生比预期更多的令牌。解决方案是创建两个不同的字段,不是吗?
【解决方案2】:

这个答案不正确,fieldType 管道只有一个结果,而不是这里暗示的两个结果。您需要将源字段复制到第二个“向后”字段并对其进行搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多