web-dev-qa-db-ja.com

Node.jsに適したインデックス作成/検索エンジンはありますか?

私は、Luceneのような、node.jsアプリケーション用の優れたオープンソース(LGPLまたは許容ライセンス)インデックスエンジンを探しています。インプロセスのインデックス作成と検索を探していますが、SphinxやSolrなどのサーバーのインデックス作成には興味がありません。

C/C++ライブラリのバインディングを作成することも怖くないので、この種の提案も受け入れます。

これまでに見つけた

  • node-cluceneこれはもはやアクティブに維持されていないようです(そしていくつかの未解決の問題があります)
  • CLuceneの独自のバインディングを作成できましたが、かなりまばらに維持されているようで、その現在のバージョンはJava Lucene
  • Apache Lucyこれは動的言語のバインディングを作成する目的で設計されているようですが、これまでのところノードバインディング(またはC API)がなく、作成に関するドキュメントが見つかりませんバインディング。また、パフォーマンスに関するベンチマークも見つかりませんでした。
  • node-search放棄されたようです
  • jsiiこれはまだプロトタイプのようであり、放棄されています
  • fullproofこれはWebブラウザでのみ実行することを目的としています
  • lunr.jsこれは、インデックス全体のシリアル化のみを許可するようであるため、スケーラブルではありません

「自分で転がす」こともできますが、既存のソリューションを使用したいと思います。

編集:なぜスタンドアロンのインデックスサーバーに興味がないのか:高速なインプロセスキーバリューストアデータベースを使用しているため、クエリのためにプロセスから出なければならないのはかなり無駄です。

58
Venemo

私の以前の答えの更新です-あまりにも多くの議論があったので、この更新を迷子にしたくありませんでした。

ダウンロードできますhere

16
Fergie

はい、新しくリリースされた Norch をチェックしてください

Norchはnode.jsの search-index モジュールに基づいており、これはGoogleの強力なlevelDBインデックスに基づいています。

編集: search-index module を使用して、高速の「インプロセス」検索機能を使用します。

13
Fergie

外部インデックスの使用に興味がない理由を説明できますか?全文検索の場合、常にPostgreSQLの全文索引作成機能を使用することに戻ります。非常に高速で、索引付けには完全な索引更新が必要なく(Solrのように)、結果はLuceneベースのソリューション(Elastic Searchなど)よりも早く返されます)。

しかし、本当にインプロセスで実行したい場合は、おそらくLunrを確認する必要があります。 http://lunrjs.com/ -ブラウザだけでなくNodeでも機能します。

編集:ここに、Luceneよりも高速なPostgresの統計情報があります: http://fr.slideshare.net/billkarwin/full-text-search-in-postgresql -スライド49を参照してください。

編集:インプロセス/アウトプロセスでどのような速度を求めているのかはわかりませんが、PostgreSQLデータベースは汗をかくことなく毎秒10万件のクエリを実行でき、SSDでもそうではありません。パフォーマンスのニーズを考えすぎているのかもしれません-複数のノードに移動する必要がある場合(またはクラスターを使用してすべてのCPUを利用する場合)、とにかくインプロセスをダンプする必要があります。

11
Matt Sergeant

全文検索ライトは、全文検索を行うための純粋なJS記述ノードモジュールです。ここで、現在のgitリポジトリリンクを見つけることができます。 https://github.com/frankred/node-full-text-search-light

2
Frank Roth