在Sphinx中将field_weights与ORDER结合使用

时间:2017-03-29 00:15:57

标签: union sphinx

我好像有question answered关于如何使用OPTION field_weights按相关性排序结果。但是我发现在同一个ORDER by查询中使用SphinxQL时它不起作用,例如。

Select * from Items where MATCH('@(Listing_Title) London @(Listing_Title,Description) Jack') ORDER By Featured_Flag DESC OPTION field_weights=(Author=1000)

这基本上是试图说:

“找到所有带有'杰克'和'伦敦'的书籍,把特色卖家的所有书籍和非特色卖家放在后面,然后在每个小组中记录”杰克“和”伦敦“出现的记录在Listing_Title本身“

因此,如果字段顺序为:

,则示例返回应如下所示
Listing_Title                Description                      Featured_Flag

Jack London Books for Sale   New buy now!                     1
London, Steinbeck and more   Call of the Wild by Jack London  1
Jack London Classics!        In great shape write or call     0
Call of Wild - London        THE Jack London                  0

我添加ORDER by Featured_Flag DESC但不再遵守field_weights=(Listing_Title=1000)

还有其他方法吗?我已经读过,查询两个索引可以作为一个联合,也许是一个Listing_Title_Index,一个All_Index可以工作吗?

1 个答案:

答案 0 :(得分:0)

好吧,field_weights只是修改计算出的权重(给特定字段增加额外的权重。所以需要确保WEIGHT()仍然以某种方式计入你的ORDER BY。

如果没有 ORDER BY(并且有MATCH(...)),那么sphinx会自动按<{1}}排序,但是如果提供排序顺序,需要自己添加

例如:

WEIGHT()