我有两张桌子。一个用于艺术家(artist_id,artist_name),一个用于曲目(track_id,artist_id,track_title)。
我希望能够处理像“更好的男人珍珠果酱”这样的查询,但是我无法思考这将如何运作的逻辑。更好的人是赛道冠军,而珍珠果酱是艺术家的名字。
我们目前正在使用sphinx来处理我们的搜索引擎(艺术家和曲目)。
有一种有效的方法吗?
答案 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";
}