lucene查询特殊字符

时间:2016-02-08 08:34:07

标签: 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", Store.NO));

查询标记:brüder\ -g 工作正常,但模糊查询标记:brüder\ -g~ 不会返回任何内容。当街道名称为 Eselgasse 查询标签:Esel~ 可以正常工作。
我使用lucene 5.3.1

感谢您的帮助!

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”

相关问题