我有一张大表,上面有我的姓名,电话号码和关系类型(朋友,家人,熟人等)。当我在Sphinx中搜索一个名字时,我希望结果具有字段值" family"加权高于"熟人。"如何手动设置某一行的权重,使其加权更高?
答案 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操作员更容易做到这一点)