lucene查询特殊字符

lucene查询特殊字符,lucene,special-characters,Lucene,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", Sto

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

谢谢你的帮助

QueryParser不分析模糊查询(以及通配符或正则表达式查询)

例如,如果您使用的是StandardAnalyzer,“Brüder Grimm Weg”将被索引为三个术语,“Brüder”、“Grimm”和“Weg”。因此,经过分析,您有:

  • “标签:brüder \-g”
    -->
    标签:brüder标签:g

    这与
    标记匹配:brüder

  • “标签:brüder-g~”
    -->
    标签:brüder-g~2

    由于未对其进行分析,因此它仍然是一个术语,并且您没有匹配项,因为您的索引中没有像“brüder-g”这样的单个术语

奇怪的是,当QueryParser解析tags:brüder \-gri时,Query.toString()返回tags:brud tags:gri