我有一些文件Solr 4.0
。我希望首先显示最相关的记录,然后显示不太相关的记录。
例如,我有 3 个文档,标题如下 -
- 收入分配政策
- 收入分配和经济政策
- 发展中国家的收入分配政策
现在当我查询类似的东西时q=title:Income Distribution Policy
,
我希望第 3 个文档首先显示(因为前 3 个单词是完全匹配的),然后我希望第 1 个文档第二个显示(除了“走向”剩余的匹配项),然后我想要第 2 个文档出现(因为中间有一些单词)。
My schema.xml
看起来像这样 -
<types>
<fieldType name="search" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="German2" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="German2" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
</types>
<fields>
<field name="title" type="search" indexed="true" stored="true"/>
</fields>
编辑1 调试输出
"rawquerystring": "title:Income Distribution Policy",
"querystring": "title:Income Distribution Policy",
"parsedquery": "title:incom title:distribut title:polici",
"parsedquery_toString": "title:incom title:distribut title:polici"
编辑2修改了fieldType
我使用了以下组合,输出仍然相同。
- StandardTokenizerFactory - autoGeneratePhraseQueries(不存在) - PorterStemFilterFactory。
- StandardTokenizerFactory - autoGeneratePhraseQueries="true" - PorterStemFilterFactory。
- StandardTokenizerFactory - autoGeneratePhraseQueries(不存在)。
- StandardTokenizerFactory - autoGeneratePhraseQueries =“true”。
- WhitespaceTokenizerFactory - autoGeneratePhraseQueries(不存在) - PorterStemFilterFactory。
- WhitespaceTokenizerFactory - autoGeneratePhraseQueries="true" - PorterStemFilterFactory。
- WhitespaceTokenizerFactory - autoGeneratePhraseQueries(不存在)。
- WhitespaceTokenizerFactory - autoGeneratePhraseQueries =“true”。
如果您不按其他任何内容排序,则您将按相似性/相关性排序。因此,如果您没有以正确的顺序获得结果,您可能需要考虑如何分配权重以及您正在使用哪些查询解析器。
我假设您正在使用 eDismax 并在标题字段上进行增强。另外看看mm(最小匹配)和pf(短语字段)用于提升。
您可能还想使用 fieldType 上设置的 autoGeneratePhraseQueries 字段进行测试。
而且当然,调试查询=true查询将帮助您了解发生了什么。您可能会发现还添加了debug.explain.structed=true在您尝试读取调试输出的前几次可能很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)