我正在实施SOLR搜索.当我输入例如理查德·蔡斯时,我得到索引中的所有理查兹和所有的追逐,比如约翰尼·蔡斯等......实际上我只想归还所有与理查德和蔡斯相匹配的名字.
我的配置设置是
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
我的查询搜索文本字段
文:理查德蔡斯
什么想法我做错了什么?
Sri*_*lan 10
您使用的是StandardTokenizerFactory,它遵循Word Boundary规则.
这意味着你的单词会在空格上分开.
如果你想要一个真正的完全匹配,即
Richard Chase要返回仅包含Richard Chase确切的文档,那么你应该使用KeywordTokenizerFactory.
但正如你所说,你想要Richard John Chase而不是Johnny Chase,它告诉我你想要Richard 和 Chase的比赛.
您既可以搜索Richard AND Chase或更改默认操作schema.xml是AND不是OR.请注意此设置是全局的.
您必须使用PhraseQuery(text:"Richard Chase")来获取文档,Ricahard并且文档Chase彼此靠近。例如,如果您还想查找,Richard X. Chase可以使用text:"richard chase"~1。
参见http://www.solrtutorial.com/solr-query-syntax.html
| 归档时间: |
|
| 查看次数: |
29656 次 |
| 最近记录: |