Sphinx 似乎正在逐字搜索文档。我不知道如何在文档中搜索确切的短语。我试过SPH_MATCH_ALL
, SPH_MATCH_PHRASE
但所有人都逐字搜索文档。我在我的 PHP 应用程序中使用它。
如何查询 Sphinx 以匹配精确的字符串?
这是我的代码:
$sphinx = new SphinxClient();
$mode = SPH_MATCH_PHRASE;
$sphinx->setServer('127.0.0.1', 9312);
$sphinx->setLimits(0,1);
$sphinx->setMaxQueryTime(5000);
$sphinx->setMatchMode($mode);
$sphinx->setFieldWeights(array('name' => 100));
$sphinx->setArrayResult(true);
$result = $sphinx->query('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
print_r($result);
返回结果是这样的:
Array (
[error] =>
[warning] =>
[status] => 0
[fields] => Array (
[0] => name
[1] => company
[2] => image
[3] => price
)
[attrs] => Array ()
[total] => 0
[total_found] => 0
[time] => 0.000
[words] => Array (
[lorem] => Array (
[docs] => 0
[hits] => 0
)
[ipsum] => Array (
[docs] => 0
[hits] => 0
)
[dolor] => Array (
[docs] => 0
[hits] => 0
)
[sit] => Array (
[docs] => 0
[hits] => 0
)
[amet] => Array (
[docs] => 0
[hits] => 0
)
[consectetur] => Array (
[docs] => 0
[hits] => 0
)
[adipiscing] => Array (
[docs] => 0
[hits] => 0
)
[elit] => Array (
[docs] => 0
[hits] => 0
)
)
)
正如您所看到的,Sphinx 正在逐字搜索文档......
最好的方法是使用 SPH_MATCH_EXTENDED2 语法并将查询放在双引号中。
$sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
$sphinx->Query('"Lorem ipsum dolor"');
扩展语法 http://sphinxsearch.com/docs/current.html#extended-syntax
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)