使用sphinx和/或mysql搜索两个表?

时间:2012-10-02 19:58:50

标签: mysql sphinx

我有两张桌子。一个用于艺术家(artist_id,artist_name),一个用于曲目(track_id,artist_id,track_title)。

我希望能够处理像“更好的男人珍珠果酱”这样的查询,但是我无法思考这将如何运作的逻辑。更好的人是赛道冠军,而珍珠果酱是艺术家的名字。

我们目前正在使用sphinx来处理我们的搜索引擎(艺术家和曲目)。

有一种有效的方法吗?

1 个答案:

答案 0 :(得分:3)

我认为,如果有人进行了与赛道和艺术家相匹配的搜索,他们就会寻找赛道。在这种情况下你期望的行为是什么?

根据您的评论,您的狮身人面像查询应如下所示:

SELECT track_id, track_title, artists.artist_id, artist_name FROM tracks
LEFT JOIN artists WHERE artists.artist_id = tracks.artist_id;

如果您使用的是PHP,那么您的代码将类似于:

$ res = $ sc->查询($ searchString,“SphinxIndexName”);

if (isset($res['matches']) && sizeof($res['matches']) > 0) {
  ids = join(",", array_keys($res["matches"]));
  $query = "SELECT track_id, track_title, artists.artist_id, artist_name FROM tracks
    LEFT JOIN artists WHERE artists.artist_id = tracks.artist_id ORDER BY FIELD(track_id, $ids)";
   // ... query MySQL and display results
}
else {
   echo "no results";
}