0

当我尝试简单的 MySql 查询时

select id 
from `contacts` 
where name LIKE '%abdul%'
OR email LIKE '%abdul%'
OR phone LIKE '%abdul%'

它从我的数据库中返回 278 条记录,当我像这样通过 Sphinx 搜索进行搜索时

$sphinx = new SphinxClient();
$sphinx->setServer('localhost',9312);
$sphinx->setLimits(0,1000);
$sphinx->setMatchMode(SPH_MATCH_EXTENDED2);
$result = $sphinx->query('abdul','test1');

它只返回 112 条记录。有没有办法在 Sphinx 中获得与 MySql Query 相同的记录?

4

1 回答 1

1

Sphinx 默认不进行通配符搜索。确保添加

min_infix_len=2

到您的索引配置,重建它然后尝试

$result = $sphinx->query('*abdul*','test1');

如果它没有帮助您需要彻底检查不同的文档以了解根本原因,因为可能还有其他原因,因为 MySQL 中的 LIKE 只是进行基本的通配符搜索,而 Sphinx 首先标记您的文本,构建倒置索引和使用它进行搜索。比 LIKE 复杂得多的过程。

于 2021-09-27T07:58:05.023 回答