我有一个关于索引多对多关系的问题。 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.
谁能帮助我吗?非常感谢!答案 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);