私はRubyでフルテキスト検索が必要なプロジェクトに取り掛かりました。当然、私はSolr + Sunspotを使い始めましたが、それを動作させることはできませんでした。ドキュメントが正しく索引付けされているかどうかを判断し、実行時クラスパスを把握して、アナライザー/トークナイザ・クラスを追加し、config.xml/schema.xmlなどを編集できるようにしました。それを受け取ってインデックスを作成したと言いましたが、クエリの結果は得られませんでした。私はちょうどカップルの日の後にあきらめた、それは構成地獄のようなものだった。
ElasticSearch + Tireはそれを稼働させるのに夢中でしたが、私は1時間でそれを稼働させました。
Luceneは単なるJava検索ライブラリなので、Solrはフルサービス検索アプリとして開発されましたが、Solrは典型的なJava Webアプリケーションをすべてトラップしています。 Javaサーブレット・コンテナ(JettyまたはTomcat)。
ElasticSearchはLuceneもベースにしています。サーブレットコンテナを内蔵していますので、デーモンのように動作し、非常にストレートなJSON + REST APIを使用してテストに最適です。それはスキーマレスなので、設定ファイルを編集しなくても私にとってはうまくいった。すべてが美しく働いた。
私が本当に必要としていたのは中国語の検索で、ElasticSearchはすでにLueceneのSmartChineseAnalyzerをプラグインとしてパッケージ化していました。そのレベルのカスタマイズが必要な場合、アナライザ/トークナイザチェーンをカスタマイズすることがどれほど難しいかはわかりません。 ElasticSearchとTireのDocmentationはどちらも一流です。
タイヤ(ElasticSearch用Rubyライブラリ)
https://github.com/karmi/tire
デモを試すと、レールsearchappをインストールし、ElasticSearchバイナリをダウンロードして実行し、Webrickを自動的に起動します。
$ rails new searchapp -m https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb
私のシステムでは、Javascriptエンジンを持っていないことに不満を抱いていました(Rails 3.2では、デフォルトではthereubyracer gemが含まれなくなりました)ので、
$ wget https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb
$ nano rails-application-template.rb
ファイルに宝石「therabyracer」を追加してください(宝石のタイヤと宝石のwill_paginateを探してください)。
$ rails new searchapp -m rails-application-template.rb
私自身のアプリケーションを開発するために、私はElasticSearchのtarballを落とし、-fスイッチを使ってフォアグラウンドで実行します(Ctrl-Cで簡単に停止できます)
$ bin/elasticsearch -f
eleasticsearch-headプラグインをインストールすると、Web管理インターフェースを取得できます
https://github.com/mobz/elasticsearch-head
また、私が知ったこともあります.1対多のリレーションシップモデルを使用している場合、Tireは検索結果でそれらを解決せず、フラットなコレクションを返します。あなたのhas_manyとbelongs_toの関係は、完全なオブジェクトではなくコレクション内のオブジェクトIDになります。