在Lucene.NET 3.0.3.0的通配符搜索中,我已经找了很长时间来转义像#,{,, [,],... 这样的特殊字符,但是我可以'找到任何可能的解决方案。
我使用 StandardAnalyzer 索引我的文档。字段“title”具有attributs Field.Store.YES 和 Field.Index.ANALYZED 。
在搜索时,我为我的searchterm调用了MultiFieldQueryParser.Escape。转义的查询看起来正确,但解析该术语会删除转义字符。所以我的搜索找不到任何结果。
searchterm:Klammer[affe]
转义搜索词:*Klammer\\[affe\\]*
解析后:title:*Klammer[affe]*
那么,如何在wildcard-Search中转义特殊字符?
答案 0 :(得分:15)
您还可以使用Lucene实现QueryParser.Escape(searchQuery)
。
答案 1 :(得分:6)
转义特殊字符
Lucene支持转义属于查询的特殊字符 句法。当前列表的特殊字符是
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
要逃避这些角色,请在角色前使用\。例如 搜索(1 + 1):2使用查询:
\(1\+1\)\:2
因此,您的查询应为*Klammer\[affe\]*
但标准分析器会删除这些字符,因此您需要以不同方式索引原始内容。
请参阅此相关问题的答案https://stackoverflow.com/a/17628127/956658。关于更改分析方法的一些信息的另一个问题How to perform a lucene query containing special character using QueryParser?