2012-02-24 50 views
2

使用Solr 3.5.0的Im和Schema我已经在所有必需的字段中启用了LowerCaseFilterFactory,但是当我搜索例如“衬衫”时我能够得到结果,当我搜索“SHIRTS”我能够获得预期的结果,但是当我尝试用“shiRTs”进行搜索时,它没有给出结果。我知道我在Schema中缺少一些东西。Solr中的小写和大写关键字

请帮我解决这个问题。

谢谢

Jeyaprakash。

+1

您应该在索引和查询的同时添加LowerCaseFilterFactory。也许您错过了一个。如果您共享您的fieldType,将会提供合适的答案。 – 2012-02-24 07:28:44

回答

4

在索引和查询时间应用相同的分析器和过滤器,因此您搜索的查询与令牌索引匹配。

至于你的情况 - 如果你申请的小写过滤器在索引时间,但不会在查询时间: -
指数令牌将shirts,但是作为搜索查询不分析SHIRTS甚至Shirts将不匹配索引shirts令牌。

如果您使用词干分析器,停用词或其他过滤器,则同样适用。

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

分析仪是组件前处理输入文本在索引时间 和/或在搜索时间。使用相同或相似的 分析仪很重要,该分析仪在索引和查询 时间以兼容的方式处理文本。例如,如果索引分析器将词汇降低,则查询分析器应该执行相同的操作来启用索引词语的查找。

+0

非常感谢Jayendra。 :) – jeyaprakash 2012-02-24 10:19:35

+0

有人可以告诉我如何做到这一点? 例如:过滤器'solr.LowerCaseFilterFactory'应用于text_en_splitting的模式。如何将此应用于查询? – 2013-05-29 09:55:44

+0

您的意思是架构中的“<分析器类型=”索引“>”和“<分析器类型=”查询“>”?我有这个但仍然没有效果...查询仍然没有按照问题中提到的那样做 – 2013-05-29 10:02:26