我有几个文件,标题为:
当搜索13时,我期望第5个是第一个结果,因为13存在两次。
字段为multiValued =“true”。
我的索引字段类型如下所示:
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[(")(,:;!?)]" 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>
答案 0 :(得分:0)
这种情况正在发生,因为文档5实际上没有两次13
项。你所拥有的是13
和2013
,它们对于搜索来说是如此不同。在这种情况下,所有五个文档只有一个13
项,因此顺序没有错。如果您希望solr考虑13
和2013
相同的术语,则可以使用同义词。所以把这一行放在synonyms.txt
文件中:
13, 2013
并在schema.xml
文件中包含此过滤器:
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
现在,当您搜索13
时,文档5将具有比其他文档更多的相关性。
答案 1 :(得分:0)
solr copyfield指令(使用和不使用EdgeNGramFilterFactory进行索引)是提高直接命中率的解决方案。