编程语言
首页 > 编程语言> > c# – 执行Lucene搜索查询“包含”

c# – 执行Lucene搜索查询“包含”

作者:互联网

我正在搜索包含用户输入的文本的文档

如果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,lucene-net
来源: https://codeday.me/bug/20190530/1186676.html