我正在从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的文件的值是大写的。搜索过程如下:
我找到了this ansewer regarding case sensitivity。我知道LowerCaseFilter is used in lucene 2.4 我所做的是使用4.x重新构建索引,但所有NOT_ANALYZED值现在都是小写的。然后问题就消失了。
对于我的解决方案使用3.0.3案例敏感度“无关紧要”和4.x“重要”的原因可能是什么。也许你们中的一些人可以向我解释幕后发生的事情。
答案 0 :(得分:0)
索引和分析是两回事。
分析表示该字段通过所选的Analyzer
。非分析的字段将按照它们的方式放入索引中。
如果索引大写字符串而不进行分析,它将在索引中保持大写,并且不会使用小写查询找到。