我好像有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可以工作吗?
答案 0 :(得分:0)
好吧,field_weights
只是修改计算出的权重(给特定字段增加额外的权重。所以需要确保WEIGHT()
仍然以某种方式计入你的ORDER BY。
如果没有 ORDER BY
(并且有MATCH(...)
),那么sphinx会自动按<{1}}排序,但是如果提供排序顺序,需要自己添加
例如:
WEIGHT()