Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 使用Lucene.NET转义通配符搜索中的特殊字符_Search_Lucene_Escaping_Wildcard_Lucene.net - Fatal编程技术网

Search 使用Lucene.NET转义通配符搜索中的特殊字符

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。转义查询看起来正确,但解析术语时会删除转义字符。因此,我的搜索无法找到任何结果。 搜

在Lucene.NET 3.0.3.0的通配符搜索中,我已经寻找了很长一段时间来转义像#、{、[、]、…这样的特殊字符,但我找不到任何可能的解决方案。

我已经使用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开始“/”也是一个特殊字符(在正则表达式中使用)。很好的建议。使用内置实现。避免自己编写此代码+单元测试。