我一直试图在Solr 5.0.0结果中首先得到准确的匹配结果。
例如,
如果我搜索一个单词bowl,预期的结果是:
确切地说,结果应该是第一位的。我的模式如下所示:
<fieldType name="text_wslc" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="1"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordRepeatFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.KStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="1"
preserveOriginal="1"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordRepeatFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.KStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>我已经看到,使用KeywordRepeatFilterFactory提供了一个完全匹配的,然后停止的版本。但这对我没用。
发布于 2015-06-29 10:51:36
您可以在schema.xml中添加另一个字段。此字段将包含原始字段的副本:
<field name="title" type="text_wslc" indexed="true" stored="true"/>
<field name="titleExact" type="text_wslcExact" indexed="true" stored="true"/>
<copyField source="title" dest="titleExact"/>其中text_wslcExact是这样的:
<fieldType name="textExact" class="solr.TextField" positionIncrementGap="100" >
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="20"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="20"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>接下来要做的就是向查询中添加(并提升)这个新字段。因此,在您的solrconfig.xml,中尝试这样做:
<str name="qf">title titleExact^10</str>
<str name="pf">title^10 titleExact^100</str>这是我的消息来源,您可以在这里得到所有的解释。
https://stackoverflow.com/questions/31112957
复制相似问题