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

时间:2015-11-27 16:17:40

标签: search sphinx mode sphinxql

我正在使用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。事先......

1 个答案:

答案 0 :(得分:1)

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

但是狮身人面像扩展了比赛'模式(sphinxQL使用的模式),隐式运算符是 AND 。所以它要求所有的话。

可以使用他的法定人数运算符来获取默认值'或者'行为

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

即只需要一个的单词。

-

  

MySQL查询在布尔模式下工作 - 所以对本田CBR 1000的查询也找到本田VTR 1000,我认为......

是的。但是因为只需要一个字,找到所有文件,并说出' 1000'他们,即使本田。这就是为什么这三个词有更多的文件。