[英]Performing Lucene Search query “Contains”
我正在搜索包含用户输入的文本的文档
如果 searchText 中没有任何特殊字符,它可以正常工作。
下面是我如何创建我的 QueryParser。 :
//analyzer is an StandardAnalyzer()
QueryParser parser = new QueryParser("Text", analyzer);
parser.SetAllowLeadingWildcard(true);
return parser.Parse(string.Format("*{0}*", searchText));
如果搜索文本中包含任何特殊字符,我会收到以下错误:
假设说搜索文本是“床 [”
Cannot parse '*bed [*': Encountered "<EOF>" at line 1, column 7.
如果搜索文本中有任何特殊字符并且我不想忽略特殊字符,我如何使我的查询解析器不会失败。
尝试使用:
QueryParser parser = new QueryParser("Text", analyzer);
parser.SetAllowLeadingWildcard(true);
var escapedSearchText = QueryParser.Escape(searchText);
return parser.Parse(string.Format("*{0}*", escapedSearchText));
即在构建查询之前转义搜索文本。
希望这可以帮助,
Lucene 支持作为查询语法一部分的 escaping 特殊字符。 当前列表特殊字符是
要转义这些字符,请在字符前使用 \。 例如,要搜索 (1+1):2,请使用以下查询:
(1+1)\:2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.