lucene查询特殊字符

lucene query special characters

我无法理解 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));

查询 tags:brüder\-g 工作正常,但模糊查询 tags:brüder\-g~ 可以不是 return 任何东西。当街道名称为 Eselgasse 时,查询 tags:Esel~ 可以正常工作。
我使用 lucene 5.3.1

感谢帮助!

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"

  • 这样的词