SphinxQL - 1 到 4 个词的完美搜索模式

SphinxQL - Perfect Search Mode for 1 to 4 words

我正在使用 SphinxQL 开发 Sphinx 搜索引擎项目。我的问题如下:

这是我的 sphinxql 查询:

"SELECT *, country FROM all_gebrauchte_products WHERE MATCH('@searchtext (".$searchQuery.")') AND country='".$where."' ORDER BY WEIGHT() DESC LIMIT ".$page.", ".$limit." OPTION ranker=expr('sum(lcs)')"

结果差异很大,如:

Honda => 50 results 
Honda CBR => 9 results 
Honda CBR 1000 => 2 results 

这是我的 MySQL 查询:

SELECT COUNT(*) FROM all_gebrauchte_products WHERE MATCH(gebr_id, gebr_hersteller, gebr_modell, gebr_ukat, gebr_kat, gebr_bemerkung) AGAINST ('".$searchQuery."' IN BOOLEAN MODE);

结果是:

Honda => 67 results 
Honda CBR => 67 results 
Honda CBR 1000 => 84 results 

MySQL 查询在布尔模式下工作 - 因此查询 Honda CBR 1000 也会找到 Honda VTR 1000,正如我认为的...

那么,接近第二个结果集的最佳搜索模式是什么? 任何人都可以向我解释什么是完美的模式以及如何(示例)以正确的方式编写 sphinxql 查询?

谢谢。提前...

主要区别在于 MySQL 的 'Boolean' 模式隐式运算符是 OR。多词查询只需要其中一个词(除非前缀为 +)

但是 Sphinxes 'extended match' 模式(这是 sphinxQL 使用的模式),隐式运算符是 AND。所以它需要所有的话。

可以使用仲裁运算符来获得默认的 'OR' 行为

... MATCH('@searchtext (\"".$searchQuery."\"/1)') ... 

即只需要 一个 个单词。

--

The MySQL query works in Boolean Mode - so query for Honda CBR 1000 also finds Honda VTR 1000, as I think...

嗯,是的。但是因为只需要一个词,also 找到了所有说“1000”的文件,即使 not Honda。这就是为什么这三个词有更多的文件。