Solr 结果没有预期的顺序

Solr result has not expected order

我有几个文件,有一个标题:

  1. -> "Just some Word 13 from year 2015"
  2. -> "Just some Word 13 from year 2011"
  3. -> "Just some Word 13 from year 2012"
  4. -> "Just some Word 13 from year 2014"
  5. -> "Just some Word 13 from year 2013"

当搜索 13 时,我希望第一个结果是 5,因为 13 存在两次。

字段是多值的="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>

这是因为文档 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 的相关性将高于其他文档。

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