我正在使用Sphinx PHP API,但提供的方法似乎很简单,只有一个select和single索引,但是如何构建一个涉及2个索引连接的查询?例如
之类的东西select * from index1,index2 where index1.key1=index2.key2;
以下是Sphinx API Client的关键方法:
$cl->SetServer ( $host, $port ); $cl->SetConnectTimeout ( 1 ); $cl->SetArrayResult ( true ); $cl->SetWeights ( array ( 100, 1 ) ); $cl->SetMatchMode ( $mode ); if ( count($filtervals) ) $cl->SetFilter ( $filter, $filtervals ); if ( $groupby ) $cl->SetGroupBy ( $groupby, SPH_GROUPBY_ATTR, $groupsort ); if ( $sortby ) $cl->SetSortMode ( SPH_SORT_EXTENDED, $sortby ); if ( $sortexpr ) $cl->SetSortMode ( SPH_SORT_EXPR, $sortexpr ); if ( $distinct ) $cl->SetGroupDistinct ( $distinct ); if ( $select ) $cl->SetSelect ( $select ); if ( $limit ) $cl->SetLimits ( 0, $limit, ( $limit>1000 ) ? $limit : 1000 ); $cl->SetRankingMode ( $ranker ); $res = $cl->Query ( $q, $index );
答案 0 :(得分:0)
Sphinx不支持'加入'
您可以通过' UNION'一次搜索多个索引,即依次搜索每个索引并附加结果(并使用整体排序顺序获取结果)。
但结果集中的一行总是来自一个索引。
(请记住,sphinx是一个全文查询引擎,不是关系数据库引擎,即使它确实提供了类似SQL的查询语言 - 只是因为它是一个熟悉的概念)
答案 1 :(得分:0)
即使它有很多行,你也可以创建一个索引来连接索引1和1中的源使用数据。 2(但请记住,你需要在第一个col上有一个唯一的id)
所有数据都在一个索引中。