【发布时间】:2018-05-22 04:38:49
【问题描述】:
我有一个使用 Sphinx 搜索引擎的项目。
问题是直接搜索(当用户输入他的查询并按下回车键时)效果很好,但是当我尝试实现自动完成时它返回零结果。
Sphinx 版本是 2.0.8(由于某些原因无法更新)。
我使用此代码进行自动竞争(取自here)
<?php
$ln_sph = new PDO("mysql:host=127.0.0.1;port={$confs['port2']}",
'',
'',
array
(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
)
);
$stmt = $ln_sph->prepare("SELECT * FROM ".implode(",", $used_indexes)." WHERE MATCH(':match') LIMIT 0,10 OPTION ranker=sph04");
$aq = explode(' ', $query);
if(mb_strlen($aq[count($aq) - 1]) < 3)
{
$query = $query;
}
else
{
$query = $query.'*';
}
$stmt->bindValue(':match', $query, PDO::PARAM_STR);
$stmt->execute();
$products_ids = array();
foreach($stmt->fetchAll() as $data)
{
//Reading data from sphinx
}
如果我通过 mysql 直接从服务器连接到 Sphinx
mysql -P10006 --protocol=tcp
并执行相同的查询,例如:
SELECT * FROM `app_catalog_prod_suggests` WHERE MATCH('пирс*') LIMIT 0, 10 OPTION ranker=sph04;
它也可以正常工作。
来自sphinx.conf的索引
index app_catalog_prod_suggests {
source=app_catalog_prod_suggests
path=/path/to/index
enable_star=1
min_word_len=3
min_prefix_len=3
morphology=stem_ru,stem_en,soundex
charset_type=utf-8
html_strip=1
}
我做错了什么?
附:如果需要,我可以提供更多数据
UPD。搜索部分
searchd {
listen=127.0.0.1:10005
listen=127.0.0.1:10006:mysql41
log=/path/to/log
query_log=/path/to/querylog
binlog_path = #
pid_file=/path/to/pid
}
【问题讨论】:
-
显示配置中的 searchd 部分和 $confs['port2'] 的值。运行脚本时是否看到任何警告或错误?
-
@Manticore-Sphinxnextgen 问题已更新。端口与 mysql 中的示例相同。没有错误或警告