Search 使用Lucene.NET转义通配符搜索中的特殊字符
在Lucene.NET 3.0.3.0的通配符搜索中,我已经寻找了很长一段时间来转义像#、{、[、]、…这样的特殊字符,但我找不到任何可能的解决方案。Search 使用Lucene.NET转义通配符搜索中的特殊字符,search,lucene,escaping,wildcard,lucene.net,Search,Lucene,Escaping,Wildcard,Lucene.net,在Lucene.NET 3.0.3.0的通配符搜索中,我已经寻找了很长一段时间来转义像#、{、[、]、…这样的特殊字符,但我找不到任何可能的解决方案。 我已经使用StandardAnalyzer为我的文档编制了索引。字段“title”包含属性field.Store.YES和field.index.analysis。 搜索时,我为我的searchterm调用了multifiedQueryParser.Escape。转义查询看起来正确,但解析术语时会删除转义字符。因此,我的搜索无法找到任何结果。 搜
我已经使用StandardAnalyzer为我的文档编制了索引。字段“title”包含属性field.Store.YES和field.index.analysis。
搜索时,我为我的searchterm调用了multifiedQueryParser.Escape。转义查询看起来正确,但解析术语时会删除转义字符。因此,我的搜索无法找到任何结果。
搜索词:
Klammer[aff]
转义搜索词:
*Klammer\\[affe\\]*
解析后:
title:*Klammer[aff]*
那么,如何在通配符搜索中转义特殊字符呢 转义特殊字符 Lucene支持转义作为查询一部分的特殊字符 语法。当前列表中的特殊字符为
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
要转义这些字符,请在字符前使用\。例如
要搜索(1+1):2请使用以下查询:
\(1\+1\)\:2
因此,您的查询应该是*Klammer\[affe\]*
但是标准分析器会删除这些字符,因此您需要以不同的方式索引原始内容
查看此相关问题的答案。另一个问题包含一些关于更改分析方法的信息您也可以使用Lucene实现
QueryParser.Escape(searchQuery)
我没有信心我看到的是您实际想要的内容。请您删除斜体,并将代码元素括起来好吗(特别是你的搜索词等)?看看*标题:*Klammer[aff]***
,我不知道哪些应该是斜体,哪些应该是实际的星号可能是重复的,不要忘记从Lucene 4.0开始“/”也是一个特殊字符(在正则表达式中使用)。很好的建议。使用内置实现。避免自己编写此代码+单元测试。