[英]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.