【问题标题】:Sphinx Sorting & GroupingSphinx 排序和分组
【发布时间】:2014-11-26 21:31:46
【问题描述】:

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

Ranking Mode: SPH_RANK_SPH04

Sort Mode: SPH_SORT_RELEVANCE

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

有没有办法应用额外的过滤来将具有相同名称的产品(它们是多色变体)彼此相邻放置?

【问题讨论】:

    标签: sphinx


    【解决方案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() 函数获取具有相同标题的所有项目的最高权重。因为你然后按那个顺序,可以先得到最好的匹配

    (请注意,您需要将名称设为属性,因此可以按它进行分组。使用 sql_field_string 来创建字段和属性:)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2016-07-20
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      相关资源
      最近更新 更多