我正在获取查询的匹配结果。例如,我的学生表name中有一个可搜索的列,因此,如果我输入“ Mack”作为查询,则它将检索所有匹配的记录名称“ Mack”。诸如“ Mack Paul”,“ Mack Rhodes”,“ Mack”之类的东西。

但是,我想首先获得最佳匹配,即“ Mack”,然后再保留“ Mack Paul”,“ Mack Rhodes”等。

我是狮身人面像的新手,不知道如何根据完全匹配优先排序结果集,然后再休息。


  有什么方法可以根据优先级或得分来获得结果
  价值观?

最佳答案

理论上很好SPH_RANK_SPH04
http://sphinxsearch.com/docs/current.html#builtin-rankers


  此外,当匹配项出现在文本字段的开始或结尾时,还会增强匹配项。因此,如果一个字段等于精确查询,则SPH04的排名应高于包含精确查询但不等于确切查询的字段。


否则,建议使用字段长度来影响权重,请参见http://sphinxsearch.com/docs/current.html#conf-index-field-lengths

或者可以尝试重写qyery

$cl->Query("Mack | ^Mack$");


...理论上应将精确匹配的排名更高,因为它匹配两个术语。尽管您可能还必须与RANKER一起玩才能以有意义的方式实际改变排名。

关于php - 如何在 sphinx 中动态设置权重/分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47852622/

10-13 01:13