Solr vs elasticsearch 類似文書検索(MoreLikeThis)

こんにちは、馬場です。
Solrとelasticsearchを比較するシリーズ、最終回は類似文書検索機能について比較します。

Solrとelasticsearch、両方のベースとなっているLuceneにはMoreLikeThisという類似文書検索の機能が実装されています。両者とも当然LuceneのMoreLikeThisを利用して類似文書検索機能を提供していますが、API の形式などはかなり異なります。

Solrの場合

Solrでは、類似文書検索のプログラムは以下のようになります。

elasticsearchの場合

elasticsearchでは類似文書検索のプログラムは以下のようになります。

Solrと同じようにmidf/mintf の設定を1にすることはできるのですが、その場合結果が返ってきません。

類似文書検索は、文書のIDを指定する方法だけではなく、文書のタイトルや本文そのものを指定する方法もあります。

下記のプログラムの結果の方が、Solrの検索結果と似ています(が、完全に一致しません...)。内部的に何か違うのかもしれません。

まとめ

検索API は、Solr が Map を構築して渡すのに対して、elasticsearchはメソッドをつなげて行く形なので書いていて心地よいです。ただ、ここでもelasticsearch のドキュメントのIDを指定して類似文書検索をする方法はマニュアルには書いてなく、APIドキュメントから「発見」したものですので、elasticsearchはまだまだ発展中だと感じました。

3回にわたって、Solr と elasticsearchの比較を行いました。実際にどちらを採用するか決定する場合、運用やパフォーマンスも要因となると思いますが、この記事がすこしでもみなさんの参考になればと思います。

Both comments and trackbacks are currently closed.