1

我有一个关于索引多对多关系的问题。例如:

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 的方法。

谁能帮我 ?多谢!

4

1 回答 1

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);
于 2013-05-23T17:29:50.117 回答