【发布时间】:2011-01-09 02:11:06
【问题描述】:
我已经测试了我在实时网站上实现的搜索功能。我遇到了一些小问题。我不能在搜索框中输入特殊字符,否则我的应用程序会崩溃。 我试图在它崩溃的字符上使用一些替换来解决这个问题,但这并不能治愈痛苦。 当我在搜索框中输入这个符号:* 时,它给了我以下错误:
无法解析 ' echo;': '' 或 '?'不允许作为 WildcardQuery 中的第一个字符。我之前遇到过这个错误,然后去掉了所有单词之间的空格。然后错误消失了。但是,当我现在将 this: * 替换为 this: "" 时,我将收到上述错误。 有什么标准方法可以解决特殊字符问题吗? 我会在这里写下我的一些代码,以便获得更好的反馈。
Analyzer analyzer = new StandardAnalyzer();
QueryParser qpContent = new QueryParser(Index.ContentFieldName, analyzer);
keyword.Trim();
keyword = keyword.Replace("\"", "");
keyword = keyword.Replace("^", "");
keyword = keyword.Replace("*", "");
Query queryContent = qpContent.Parse(keyword + "*");
QueryParser qpLanguage = new QueryParser("language", analyzer);
Query queryLanguage = qpLanguage.Parse(Sitecore.Context.Language.Name.ToString());
如您所见,我首先替换 *,然后将其添加回查询解析器。我不是 100% 熟悉这种功能,因此根本不知道我做错了什么。非常感谢所有帮助,谢谢!
【问题讨论】:
-
您遇到的问题(SQL 注入漏洞)不在您发布的代码中。还请发布您如何查询数据库(例如,您如何构建查询)。
-
Alex,我现在已经解决了。感谢您的回复 :)。