[英]lucene filter case sensitive
我正在从Lucene 3.0.1迁移到4.1.0。 经过几天的分析,我认为这些版本的查询过滤结果有所不同。 迁移后,我看到相同查询和过滤器的查询结果有所不同。
事情看起来如下:
我使用的是Lucene 3.0.1,但是例如,IndexWriter的StandardAnalyzer是这样配置的:
new StandardAnalyzer(Version.LUCENE_24)
QueryParser使用了相同的配置。 很少有NOT_ANALYSED字段(意味着未建立索引;在4.x中已弃用),这会导致在迁移到4.0.0或4.1.0后出现问题。 问题是某些NOT_ANALYZED的Filed的值是大写。 搜索过程如下所示:
我发现这与区分大小写有关 。 我知道在Lucene 2.4中使用LowerCaseFilter,我所做的是用4.x重建索引,但是现在所有的NOT_ANALYZED值都是小写的。 然后问题消失了。
对于我的使用3.0.3区分大小写的解决方案“无关紧要”,而在4.x中则“重要”的原因可能是什么。 也许有些人可以向我解释幕后发生的事情。
索引编制和分析是两件事。
分析意味着该字段将通过所选的Analyzer
。 未分析的字段将按原样放置在索引中。
如果您对大写字符串进行索引而不进行分析,则它将在索引中保持大写形式,并且无法使用小写查询找到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.