我正在搜索包含用户输入文本的文档
如果 searchText 中没有任何特殊字符,它工作正常。
下面是我如何创建我的 QueryParser。 :
//analyzer is an StandardAnalyzer()
QueryParser parser = new QueryParser("Text", analyzer);
parser.SetAllowLeadingWildcard(true);
return parser.Parse(string.Format("*{0}*", searchText));
如果搜索文本中包含任何特殊字符,我会收到以下错误:
假设搜索文本是“bed [”
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));
即在构建查询之前转义搜索文本。
希望对您有所帮助,
关于c# - 执行 Lucene 搜索查询 "Contains",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6663737/