我有一个大表,列有名称、电话号码和与我的关系类型(朋友、家人、熟人等)。当我在 Sphinx 中搜索名称时,我希望字段值“family”的结果的权重高于“熟人”。如何手动设置某一行的权重,使其权重更高?
1110 次
1 回答
0
很多选择...
A)您可以将“类型”attribute
存储在 - 属性存储在索引中(与field
s 不同)并可用于对结果进行排序。
你到底怎么做很大程度上取决于个人喜好。
例如:
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)您实际上可以将类型保留为 a field
,并提升结果,
例如扩展查询
john | (john @type family)
在 OR 的两边都需要 john,因此总是会有包含 john 的行。但是因为它的两边,也匹配family的结果会匹配更多的关键字,并且排名更高。
可以使用字段权重选项选择它对结果的影响程度。
(最新版本的 sphinx 有 MAYBE 运算符可以更轻松地执行此操作)
于 2014-06-10T09:25:26.403 回答