web-dev-qa-db-ja.com

NoSQLデータベースでの全文検索

  • ここの誰もが、NoSQLデータベースで全文検索を行った実際のオンラインシステムを展開した経験がありますか?
  • たとえば、MongoDB、Riak、CouchDBの全文検索はどのように比較されますか?
  • 私が探しているメトリックのいくつかは、展開と保守の容易さ、そしてもちろんスピードです。
  • 彼らはどのくらい成熟していますか?それらはLuceneインフラストラクチャーの代替品ですか?

ありがとう。

27
unj2

既存の「NoSQL」データベースは、「フルテキスト検索」と名付けられるものの合理的な実装を提供していません。特に、MongoDBにはこれまでほとんど何もありませんでした(正規表現を使用した一致は全文検索ではなく、キーワードの単語リストで$ inまたは$ all演算子を使用した検索は、「全文検索」の非常に貧弱な実装です)。 Solr、ElasticSearch、またはSphinxの使用は簡単です。アプリケーションレベルでの実装と統合です。どちらを選択するかは、要件と現在の設定に大きく依存します。

10
Andreas Jung

Riak Searchの詳細 http://wiki.basho.com/Riak-Search.htmlpresentation も同様です

9
Eva611

はい。データの完全なLuceneクエリをサポートするためのCouchDB拡張機能である CouchDB-Lucene を参照してください。

7
JasonSmith

MarkLogicには、思い出すと、テキスト検索用のより良いオプションがあります。これは トピックに関するディスカッション ですが、彼らのブログではありますが、彼らの作家からのものです。

5
Tom Kerr

Solandra (CassandraベースのApache Solr)を使用したアプリケーションの開発に携わっています。私の経験では、システムは非常に安定しており、TB +データを処理できます。私は個人的に次の理由でソフトウェアに非常に満足しています:1. Cassandraバックエンドによるデータの自動パーティション分割。2。充実したクエリ機能(SolrおよびLuceneによる)。読み取りと書き込み(書き込みは読み取りよりも大幅に高速です)。

ただし、現在Solandraは、バッチ変異をサポートしていないと思います。つまり、Cassandraへの1回の挿入で100列を挿入できますが、Solandraはこれをサポートしていません。

4
Irfan

MongoDBの場合、完全なフルテキストインデックス機能はまだありませんが、パイプラインに1つある可能性があります おそらくv2.2で予定

当面は、ここで説明するように、文字列配列フィールドを使用してインデックスを配置することで、単純な逆インデックスを作成できます。 Mongoでの全文検索

または、専用のSolrまたはLuceneインデックスで並列のフルテキストインデックスを維持し、非常に野心的であると感じている場合は、Mongo oplogからフルテキストストアに直接複製できます。それ以外の場合は、両方を入力して、アプリケーションロジックとの同期を維持します。

3
Chris Fulstow

MongoDB に格納されているデータを使用してこれを完了しましたが、フルテキストエンジンを Sphinx Search に入力しています。 mongoには、将来のリリースにフルテキストを追加することに関して投票可能な問題があることを知っています。ただし、この時点ではありません。

Mongo情報をスフィンクスに挿入する方法はいくつかあります。ただし、私が最も運が良かった(そして非常に簡単だった)のは、 xmlpipe2 によるものです。これの使い方を完全に理解するには少し時間がかかりました。ただし、この記事: PHPのSphinx xmlpipe2 には、(少なくともPHPでは)ドキュメントを構築する方法と、sphinxに挿入する方法を示す優れたウォークスルーがあります。

基本的に私の設定は次のようになります:

source my_source {
     type = xmlpipe
     xmlpipe_command = /usr/bin/php /www/generateSphinXml.php identifierForMyTable
}

私のインデックスでは、このようになります:

index my_index {
     source = my_source
     path = /usr/local/sphinx/var/data/my_index
     docinfo = extern
     min_Word_len = 1
     mlock = 0
     morphology = stem_en
     charset_type = utf-8 //<----- This is q requirement however.
     enable_star = 1
     html_strip = 0
     min_prefix_len = 2
}

私はこれで素晴らしい成功を収めました。うまくいけば、あなたはこれが役に立つと見つけることができます。

1
Petrogad

PHPを使用している場合、 MongoLantern。http://sourceforge.net/projects/mongolantern/ という名前のNo-SQLデータベースMongoDBで全文検索を行うための優れたソリューションがあります。 =

以前はSphinx + MongoDBを使用してフルテキスト検索を実行していましたが、パフォーマンスは優れていましたが、結果の品質は非常に悪かったです。 MongoLanternを使用すると、現在の検索が大幅に改善されました。

MongoLanternはMongoDBサイトにもリストされています。

自分で試してみたら教えてください。

1
Sougata Pal

cLunceプロジェクト。また、上記で言及されていないxapian。私はSphinxを使用していますが、設定は非常に優れていますが、多少扱いにくいです。私は実際には、sphinx.confファイルでSphinxのSQLを使用するのではなく、XMLPIPE2を介してMongoからSphinxにデータをパイプすることを好みます。

0
FYA

Solrは10genのMongo Connectorで使用できます。これにより、そこにデータをプッシュできます(とりわけ)。

https://github.com/10gen-labs/mongo-connector/tree/master/mongo-connector

彼らの例から:

python mongo_connector.py -m localhost:27217 -t http://localhost:8080/solr
0
Andriy Tkach

Couchbase 5.0は、オープンソースのBleveエンジン上に構築された全文検索機能をリリースしています。全文のインデックス作成を有効にして、データベース内の既存のJSONドキュメントに対して使用を開始します。

トピックをカバーするいくつかのスライドとプレゼンテーションビデオ、ElasticsearchおよびLuceneについても言及しています... https://www.slideshare.net/Couchbase/fulltext-search-how-it-works-and-what-it-できる

0
1tylermitchell

間違いなくSolr。 NoSQLです。

それは:

  • 素晴らしいパフォーマンス
  • 素晴らしいストレージオプション
  • ステマー
  • ハイライティング
  • ファセット
  • 分散検索(SolrCloud)
  • 完璧なAPI
  • ウェブ管理者
  • HTML、PDF、DOCインデックス作成
  • 他の多くの機能
0
OSP