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。这就是为什么这三个词有更多的文件。
我正在使用 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。这就是为什么这三个词有更多的文件。