我有一些文件在Solr 4.0
. 我希望首先显示最相关的记录,然后再显示不太相关的记录。
例如,我有 3 个标题如下的文件 -
- 迈向收入分配政策
- 收入分配和经济政策
- 发展中国家的收入分配政策
现在,当我查询类似的内容时q=title:Income Distribution Policy
,
我希望第 3 号文件首先出现(因为前 3 个单词完全匹配)然后我希望第 1 号文件出现在第二个(除了“Towards”剩余的匹配项)然后我想要第 2 号文件出现(因为中间有一些词)。
我的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"。