2017-02-18 16 views
0

而不是在sphinx默认排序,我想排序/权重基于另一个表中的字段的结果。我的模式是这样的:使用不同的表列狮身人面像搜索权重排序

node { 
    id 
    weight 
} 

node_text { 
    id 
    node_id 
    text 
} 

(注:只有每个节点一个NODE_TEXT)

我想指数node_text,但能够回到由node.weight下令狮身人面像的结果。我假设我需要的是这样的:

sql_query = SELECT node_id, text from node_text 

sql_joined_field = weight from query; SELECT id, weight FROM node ORDER BY id ASC 

这是搜索匹配ORDER BY node.weight DESC正确的方法是什么?我希望能够运行一个查询类似如下:

mysql> SELECT * FROM nodetest1 WHERE MATCH('foobar') ORDER BY weight DESC; SHOW META; 

回答

1

sql_joined_field,使得,你需要weight被存储在一个属性。最简单的将是一个简单的加入...

sql_query = select node_id, text, weight from node_text inner join node using (node_id=node.id) 
sql_uint_attr = weight 

那么就应该为你SphinxQL查询工作:)