2012-06-15 16 views
6

私たちは小さなデータセットを持っており、巧妙な方法でそれを検索して、自動補完入力ボックスを設定したいと考えています。ユーザーはあるタイプのエンティティを検索したいが、関連するタイプの属性を入れることができるはずです。Javascriptでのみクライアントで使用できるSolrやElasticsearchのようなものがありますか?

我々のアプリケーションは非常に業界固有であるため、私はより多くの関係づけコンテキストに抽象的な質問を置くしようとします:

:ユーザーは果物の特定の種類を選択したいと多くを使用することができます果物のさまざまな特性のそれを検索する。同じ果物の彼女は、その名前(りんご)を検索することができる、特別な種類(ゴールデンデリシャス)、ローカライズされたバージョン(APFELتفاحポム)、だけでなく、含有する食品などの他の特性、果物(pandowdy,シダー)、またはその説明のフルテキスト検索の結果であってもよい。

通常、私はsolrまたはelasticsearchのようなものを使用したいと考えていますが、私たちのデータセットは実際には大きくなく、それぞれ最大要素数が4〜5の関連エンティティです。加えて、それは非常に静的であり、2週間おきに数回の編集が追加されます。そこで、ブラウザのデータストアを使用して、ある種のインデックスを管理および検索することを考えました。問題は、私たちの研究では、Web SQLまたはIndexed DBを抽象化することをはるかに上回るものは見つかりませんでした。

solrやelasticsearchのような処理を行い、小さなデータセットに対してクライアント側で使用できるプロジェクトやライブラリはありますか?私たちは、

  • 高速検索
  • 前処理(トークン化、フィルタリング...)
  • ランキングを注文する次の機能を探している、

を高める問合せは、それは上の動作するはずです最近のブラウザとモバイル、他のブラウザのダムフォールバック(全文検索)が可能です。

答えて

3

IndexedDB 非常に扱いが面倒で、何か変更を加えることなくあなたが望むことはできないと思います。

WebSql 私はフルテキストを使ってChrome WebSql(sqliteの)(FT3)を使用し、あなたには、いくつかの先進的なそれに照会し、それを自動的重み結果を行うことができます。例えば:

table_ft3構造= [ID、名前、説明、ペット]

、あなたは 「table_ft3からIDを選択table_ft3のMATCH「ワード1ワード2 wordfuzzy * -notme +必要な名前で問い合わせることができます:ジョンedwar *メアリーペット:犬の猫」

これはChromeに限られています。約12ワードの560k行のテーブルでは、非常に速く、10ms以下です。

JSLinqから​​ これは、それが途方もなく速いメモリのすべてを格納することで、大規模なデータセットのために良いですが、私はそれがすべての先進的な重みを持っているとは思いません。独自の複雑なクエリ関数を記述できるという利点があります。

JSIIからhttp://karussell.wordpress.com/2010/11/02/jsii-full-text-search-in-1k-loc-of-javascript/ これはLuceneのスタイルの重みを使用し、20K行の上にはない素晴らしいが、あなたのデータのための十分なおそらく良いです50msの時に入ってきます。

+0

素晴らしい!どうもありがとうございました。 – Kariem

関連する問題