狮身人面像 - 按字段的值来衡量结果

时间:2014-06-10 00:45:22

标签: sphinx sphinxql

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

1 个答案:

答案 0 :(得分:0)

许多选择......

A)你可以存储'类型'在attribute中 - 属性存储在索引中(与field不同),可用于对结果进行排序。

你究竟是怎么做的,这主要取决于个人喜好。

例如:

sql_query = SELECT id,name,phone,type,(type=family) as boost from table
sql_attr_bool = boost

然后可以通过boost属性对查询进行排序。 ... ORDER BY boost DESC, WEIGHT() DESC

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


或B)您实际上可以将类型保留为field,并提升结果,

例如扩展查询

john | (john @type family)

在OR的两边都需要john,因此总是会有包含john的行。但由于它的双方,结果也匹配家庭,将匹配更多的关键字,并排名更高。

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

(最新版本的sphinx让MAYBE操作员更容易做到这一点)