Sphinx-通过字段值对结果进行加权

Sphinx-通过字段值对结果进行加权,sphinx,sphinxql,Sphinx,Sphinxql,我有一个很大的表,其中列有姓名、电话号码和与我的关系类型(朋友、家人、熟人等)。在Sphinx中搜索姓名时,我希望字段值为“family”的结果的权重高于“熟人”。如何手动设置某行的权重,使其权重更高?许多选项 A) 您可以将“类型”存储在属性中-属性存储在索引中(与字段不同),并可用于对结果进行排序 你到底怎么做在很大程度上取决于个人喜好 例如: sql_query = SELECT id,name,phone,type,(type=family) as boost from table sq

我有一个很大的表,其中列有姓名、电话号码和与我的关系类型(朋友、家人、熟人等)。在Sphinx中搜索姓名时,我希望字段值为“family”的结果的权重高于“熟人”。如何手动设置某行的权重,使其权重更高?

许多选项

A) 您可以将“类型”存储在
属性中
-属性存储在索引中(与
字段不同),并可用于对结果进行排序

你到底怎么做在很大程度上取决于个人喜好

例如:

sql_query = SELECT id,name,phone,type,(type=family) as boost from table
sql_attr_bool = boost
然后可以按boost属性对查询进行排序<代码>。。。按增压说明订购,重量()说明

您也可以将该类型存储为一个普通的数字整数,每个类型都有一个值,这样的设置就可以自然地按该列排序


或者B)您实际上可以将类型保留为
字段
,并提高结果

例如,扩展查询

john | (john @type family)
在OR的两边都需要john,所以始终会有包含john的行。但因为它的两面性,结果也匹配家族,将匹配更多的关键字,排名更高

可以使用“字段权重”选项选择它对结果的影响程度


(sphinx的最新版本可能更容易做到这一点)

谢谢,有用的答案!