我无法理解lucene中特殊字符的处理 我的分析器没有停用词,因此不会删除特殊字符:
CharArraySet stopwords = new CharArraySet(0, true);
return new GermanAnalyzer(stopwords);
比创建像:
这样的文档doc.add(new TextField("tags", "23", Store.NO));
doc.add(new TextField("tags", "Brüder-Grimm-Weg", Store.NO));
查询标记:brüder\ -g 工作正常,但模糊查询标记:brüder\ -g~ 不会返回任何内容。当街道名称为 Eselgasse 查询标签:Esel~ 可以正常工作。
我使用lucene 5.3.1
感谢您的帮助!
答案 0 :(得分:0)
QueryParser不会分析模糊查询(以及通配符或正则表达式查询)。
例如,如果您使用的是StandardAnalyzer,“Brüder-Grimm-Weg”将被编入三个术语,“brüder”,“grimm”和“weg”。所以,经过分析,你得到:
"tags:brüder\-g"
- > tags:brüder tags:g
这与tags:brüder
"tags:brüder\-g~"
- > tags:brüder-g~2
由于未对此进行分析,因此它仍然是单个术语,并且您没有匹配项,因为您的索引中没有单个术语,如“brüder-g”