Solr edismax通配符搜索找不到原始字符串

发布于 2025-01-08 00:34:56 字数 1860 浏览 1 评论 0原文

我的 Solr 索引中有下一个内容: text_en 类型字段中的 西印度樱桃(有关字段定义,请参见下文)。

当我使用 cherr* 搜索时,找到匹配项。
同时搜索 cherri* 与文档中的单词匹配。
但搜索 cherry* 确实匹配。

我怀疑 PorterStemFilterFactory 对此,但我不这样做不明白为什么(查询分析器与索引分析器相同)。


示例查询

/solr/select?defType=edismax&q=cherry*

solrconfig.xml

...
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
...

字段分析

索引

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri <-- note the change from cherry to cherri

查询

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri

I have next content in my Solr index:
west indian cherry in filed of type text_en (see below for field definition).

When I search with cherr* match is found.
Also search for cherri* matches word in document.
But search for cherry* does not match.

I suspect PorterStemFilterFactory for this, but I don't understand why (query analyzer is same as index analyzer).


sample query

/solr/select?defType=edismax&q=cherry*

solrconfig.xml

...
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
...

field analysis

index

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri <-- note the change from cherry to cherri

query

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长途伴 2025-01-15 00:34:56

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#Analyzers 提及 -

在通配符和模糊搜索中,不会对
搜索词。

因此搜索查询在查询期间不会进行任何分析。
因此,索引的术语将不同于正在搜索的术语。

由于索引词是 cherri,因此搜索 cherry* 将不会匹配任何文档。

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#Analyzers mentions -

On wildcard and fuzzy searches, no text analysis is performed on the
search word.

So the search query will not undergo any analysis during query time.
Hence the terms indexed would be different from the ones being search upon.

As the indexed term is cherri, the search for cherry* would not match any documents.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文