0

我正在将 Sphinxsearch 集成到我的网站中,并重写我的旧代码以使用 Sphinx。我遇到的问题是 SphinxQL 中 MATCH 中的特殊字符。
示例:想要搜索 H&M
使用普通的 mysql 我得到了数千条记录,所以我很确定我的数据库中包含该单词的标题。
我不需要 MATCH 中的扩展查询语法。

$q = "h&m";  
$spxq = "SELECT * FROM sphinx_index WHERE MATCH(:query) LIMIT 0,10";  
$stmt = $DB->prepare($spxq);  
$stmt->bindValue(':query', $q, PDO::PARAM_STR);  
$stmt->execute();  
$res = $stmt->fetchAll(PDO::FETCH_ASSOC); 

这不会返回任何结果。
在此之后我尝试转义 $q 所以:

$q = "h\&m";

仍然无法正常工作。也尝试过双重转义,但仍然无法正常工作。
任何帮助都将不胜感激。

4

1 回答 1

0

好的,我明白了,如果将来有人遇到同样的问题。解决方案是在sphinx.conf文件的charset_table中添加您希望能够搜索的特殊字符。

因此,对于我的 H&M,您需要将 & 字符 (U+026) 添加到字符集表中。

于 2016-01-16T07:42:55.270 回答