問題の投稿と共通するタグの数が最も多い投稿を見つけて、関連する投稿を見つけたいと考えています。SQLクエリでこれを行うことができますが、それぞれに数十のタグを持つ何千もの投稿があるので、CouchDBの方が良い選択肢になるのではないかと思っていました. もしそうなら、それはCouchDBでどのように機能しますか?
この問題を関係的に考えると、構造は次のようになります。
post: id, (other post data)
tag: id, (other tag data)
post_tag: post_id, tag_id
投稿 #X の最も関連性の高い上位 10 件の投稿を検索する SQL:
select r.post_id
from post_tag p join post_tag r on p.tag_id = r.tag_id
where p.post_id = X and r.post_id != X
group by r.post_id
order by count(*) desc
limit 10
このクエリは、投稿 X と共通するタグが最も多い上位 10 件の投稿を返します。
CouchDB から同じ結果をより効率的に取得できますか? どのように?