带 PDO 的 Sphinxql php
Sphinxql with PDO php
我正在将 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";
仍然没有 working.Tried 双重转义,仍然无法正常工作。
如有任何帮助,我们将不胜感激。
好的,我明白了,如果以后有人遇到同样的问题。
解决办法是在sphinx.conf文件中添加你希望能够搜索的特殊字符,在charset_table.
因此对于我的 H&M 案例,您需要将 & 字符 (U+026) 添加到字符集 table。
我正在将 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";
仍然没有 working.Tried 双重转义,仍然无法正常工作。
如有任何帮助,我们将不胜感激。
好的,我明白了,如果以后有人遇到同样的问题。 解决办法是在sphinx.conf文件中添加你希望能够搜索的特殊字符,在charset_table.
因此对于我的 H&M 案例,您需要将 & 字符 (U+026) 添加到字符集 table。