Solr结果没有预期的顺序

时间:2015-06-12 12:05:20

标签: solr solr4

我有几个文件,标题为:

  1. - > “只是从2015年开始的一些Word 13”
  2. - > “只是2011年的一些Word 13”
  3. - > “只是2012年的一些Word 13”
  4. - > “只是2014年的一些Word 13”
  5. - > “只是从2013年开始的一些Word 13”
  6. 当搜索13时,我期望第5个是第一个结果,因为13存在两次。

    字段为multiValued =“true”。

    我的索引字段类型如下所示:

    <analyzer type="index">
       <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[(&quot;)(,:;!?)]" replacement=""/>
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.ReverseStringFilterFactory"/>
       <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30" side="front"/>
       <filter class="solr.ReverseStringFilterFactory"/>
    </analyzer>
    

2 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为文档5实际上没有两次13项。你所拥有的是132013,它们对于搜索来说是如此不同。在这种情况下,所有五个文档只有一个13项,因此顺序没有错。如果您希望solr考虑132013相同的术语,则可以使用同义词。所以把这一行放在synonyms.txt文件中:

13, 2013

并在schema.xml文件中包含此过滤器:

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

现在,当您搜索13时,文档5将具有比其他文档更多的相关性。

答案 1 :(得分:0)

solr copyfield指令(使用和不使用EdgeNGramFilterFactory进行索引)是提高直接命中率的解决方案。