如何通过sphinx索引多对多的关系

时间:2013-05-23 17:07:41

标签: join many-to-many sphinx

我有一个关于索引多对多关系的问题。 e.g:

table A : id,value_a(string)
table B : id,value_b(string)
table C: id_a,id.b,value_c(string)

查询是:

select * from C where C.id_a = A.id And A.value_a like keyword_a
         and C.id_b = B.id andB.value_b like keyword_b

所以我想用sphinx的全文搜索索引表A和表B,但我找不到 一个加入两个的方法 搜索结果到表C.

谁能帮助我吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要为所有数据制作索引

sql_query = select C.id,id_a,id_b,value_a,value_b,value_c \
       from C \
       inner join A on (C.id_a = A.id) \
       inner join B on (C.id_b = B.id)
sql_attr_uint = id_a
sql_attr_uint = id_b

通过将id_a和id_b作为属性存储在索引中,可以按(在搜索时)分组,每个A或B只获取一个文档。

顺便说一下,查询就像是

$cl->setMatchMode(SPH_MATCH_EXTENDED);
$res = $cl->Query('@value_a keyword_a @value_b keyword_b',$sphinx_index);