执行 Lucene 搜索查询“Contains”
我正在搜索包含用户输入的文本的文档
如果 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.
如果搜索文本中存在任何特殊字符并且我怎样才能使我的查询解析器不会失败不想忽略特殊字符。
I am doing search for documents that contains the text entered by user
It works fine if the searchText don't have any special characters in it.
Below is how i create my QueryParser. :
//analyzer is an StandardAnalyzer()
QueryParser parser = new QueryParser("Text", analyzer);
parser.SetAllowLeadingWildcard(true);
return parser.Parse(string.Format("*{0}*", searchText));
I get the following error if the search text contains any special character in it :
suppose say search text is "bed ["
Cannot parse '*bed [*': Encountered "<EOF>" at line 1, column 7.
How can i make my query parser not fail if there are any special characters in search text and also i don't want to ignore the special characters.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试使用:
即在构建查询之前转义搜索文本。
希望这有帮助,
Try using:
i.e. escape the search text before building your query.
Hope this helps,
Lucene 支持转义查询语法中的特殊字符。当前列表特殊字符是
要转义这些字符,请在字符前使用 \。例如,要搜索 (1+1):2,请使用查询:
(1+1)\:2
Lucene supports escaping special characters that are part of the query syntax. The current list special characters are
To escape these character use the \ before the character. For example to search for (1+1):2 use the query:
(1+1)\:2