有谁能告诉我如何在 sphinx搜索中实现SQL连接的功能? 我想索引table1中的几列和table2中的少数列。
表格在MySQL中。
答案 0 :(得分:0)
您可以在sql_query
中使用联接,它只是一个标准的MySQL查询,索引器运行并为输出编制索引。 MySQL服务器只需要运行它。
sql_query = SELECT id,t.name,o.test FROM table1 t INNER JOIN other o USING (id)
答案 1 :(得分:0)
1°,因为Barryhunter回答
sql_query = SELECT t1.id,t1...., t2.... FROM table1 AS t1 INNER JOIN table2 AS t2 ON ....
2°,如果一对多
sql_query = SELECT t1.id,t1...., group_concat(t2.foo) ASt 2_foo, . FROM table1 AS t1 INNER JOIN table2 AS t2 ON .... GROUP BY t1.id
group_concat有长度限制但是狮身人面像非常棒
sql_query = SELECT t1.id,t1....,. FROM table1 AS t1;
sql_joined_field = t2_foo from query;\
SELECT t2.rel_t1_id , t2.foo\
FROM table2` AS t2\
ORDER by t2.rel_t1_id ASC
由于我的英语很差,读这可能更清楚 http://sphinxsearch.com/docs/current/conf-sql-joined-field.html
sql_joined_field = t2_foo会添加一个名为t2_foo的“可搜索”字段。在此字段中,您将检索t2.foo内容(如组concat但按空格分隔)
第一列必须是与sql_query
中的t1.id匹配的id按照ASC的顺序是强制性的
在同一个想法中,您可以在属性中使用mva作为多个值 http://sphinxsearch.com/docs/current/conf-sql-attr-multi.html
sql_attr_multi = uint tag from query; \
SELECT id, tag FROM tags