Sphinx Sorting&分组

时间:2014-11-26 21:31:47

标签: sphinx

Sphinx用于搜索产品名称中的关键字。

Ranking Mode: SPH_RANK_SPH04

Sort Mode: SPH_SORT_RELEVANCE

返回的结果是相关的,并且都包含所请求的关键字。

有没有办法应用额外的过滤来将相同名称的产品(它们是多色变体)放在一起?

1 个答案:

答案 0 :(得分:1)

sphinx中有一个GROUP BY功能。问题是你听起来你想要每组多个项目(即每个项目标题) - 这只能通过SphinxQL获得(听起来像你使用SphinxAPI)。

现在转换为SphinxQL可能是个好点:)

这样的东西
 sphinxQL> SELECT id,title,MAX(WEIGHT()) AS tpw FROM sample2 
   WHERE MATCH('keyword') GROUP 5 BY title 
   ORDER BY tpw DESC, title ASC OPTION ranker=sph04;

神奇的是

  1. GROUP 5 BY将返回最多五个具有相同标题的项目。如果不想将它限制为5只是放一个非常高的数字!
  2. 创建虚拟属性 tpw 可让您首先对结果进行排序,但请将这些项目保持在一起。 MAX()函数获得具有相同标题的所有项目的最高权重。因为你那么订购,可以先得到最好的匹配
  3. (注意,您需要将名称设为属性,因此可以按其分组。使用sql_field_string同时创建字段和属性:)

    ...这是一个非常先进的功能,这个sphinx的GROUP N BY,但它也非常强大。