solr - 在SOLR搜索上执行完全匹配

标签 solr

我正在实现SOLR搜索。当我输入例如Richard Chase时,我得到
所有索引中的Richards和所有Chases,例如Johnny Chase等。实际上,我只想返回所有与Richard和Chase都匹配的名称。

我的配置设置是

<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>



和我的查询搜索文本字段

文字:理查德·蔡斯(Richard Chase)

有任何想法我在做什么错吗?

最佳答案

您正在使用StandardTokenizerFactory,它遵循Word Boundary rules

这意味着您的单词会在空格上分开。

如果您想要真正的完全匹配,即
Richard Chase返回仅包含Richard Chase的文档,那么您应该KeywordTokenizerFactory

但是正如您提到的,您只需要 Richard John Chase 而不是 Johnny Chase ,它告诉我您想要匹配Richard Chase。

您可以搜索Richard AND Chase或将schema.xml中的默认运算符更改为AND而不是OR。请注意,此设置是全局的。

关于solr - 在SOLR搜索上执行完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224527/

相关文章:

Solr 停用词替换为 _ 符号

solr - 如何更新solr索引?

solr - 是什么决定了 InstanceDir 是完整路径还是相对路径?

SOLR 3.6.0,在对一堆实体进行完全重新索引后,我的一些项目没有进入 SOLR 索引,但没有生成日志

java - 尝试使用 tomcat 对 solr 实例执行完全导入

solr - QueryResponse (SolrJ 5.0.0) 将 ClassCastException 从 String 返回到 NamedList for spellcheck.collat​​ion=true

search - 我可以使用哪些 Solr 分词器和过滤器来进行强大的常规站点搜索?

java - 在最短的时间内合并 60GB 和 10GB 的 solr 索引的最佳方法?

Solr:索引 fb2 文件

solr - 关于Solr Sharding的问题