我正在使用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查询在布尔模式下工作 - 所以对本田CBR 1000的查询也找到本田VTR 1000,我认为......
那么,接近第二个结果集的最佳搜索模式是什么? 任何人都可以解释一下,什么是完美的模式以及如何(例子)以正确的方式编写sphinxql查询?
日Thnx。事先......
答案 0 :(得分:1)
主要区别在于MySQLs'布尔'模式隐式运算符是 OR 。多字查询只需要其中一个单词(除非前缀为+)
但是狮身人面像扩展了比赛'模式(sphinxQL使用的模式),隐式运算符是 AND 。所以它要求所有的话。
可以使用他的法定人数运算符来获取默认值'或者'行为
... MATCH('@searchtext (\"".$searchQuery."\"/1)') ...
即只需要一个的单词。
-
MySQL查询在布尔模式下工作 - 所以对本田CBR 1000的查询也找到本田VTR 1000,我认为......
是的。但是因为只需要一个字,也找到所有文件,并说出' 1000'他们,即使不本田。这就是为什么这三个词有更多的文件。