- 最下位レベルのコンパスはLuceneを使用しますが、インデックスの特別な実装を使用します。
- コンパスは、Luceneドキュメントの各ドメインオブジェクトにマップします。 オブジェクトの識別子は、ドキュメントの識別子になります。
- オブジェクトのフィールドは、ドキュメントのフィールドに変わります。
- 検索結果もオブジェクトです。 コンパスは、インデックスからのデータに基づいてそれらを作成(デシリアライズ)します。
- コンパスは、ネストされたオブジェクト(これを検索可能なコンポーネントと呼びます)およびオブジェクトリンク(検索可能な参照)を処理できます。 ネストされたオブジェクトはメイン文書内に保存されます。
- コンパスはトランザクションが可能です。
class Post { static searchable = { category index: 'not_analyzed', excludeFromAll: true title boost: 2.0 comments component: true } static hasMany = [comments: Comment] User author String title, post, category Date createdAt }
これで、新しく作成されたすべてのPostインスタンスにインデックスが作成されます。
一般に、これ以上行う必要はありません。 次の形式の検索クエリを既に作成できます。
Post.search(" ")
その結果がアプリケーションの本質になります! クエリ言語Luceneを使用できます。
実際、今は検索可能なドキュメントを再販したくありませんでした。 それにはいくつかの問題があります。 それらは、CompassがLuceneと他の検索エンジンの両方を使用できる技術的に洗練された多目的な製品であるという事実に由来します。 したがって、作成者はこのコードをさらに維持することを望んでいません。 そして、その著者であるShay Banonは、より普遍的ではないが、 よりクールなもの-ElasticSearch検索エンジンを作成することにしました。
ElasticSearch:
- Lucene 3に基づく
- 元々、拡張性が高く手頃な価格で設計されています。
- キャッシングメカニズムが含まれています(ちなみに、 Solrとは異なります)。
コンパスは、専用の組み込みソリューションです。 ElasticSearchに関しては、組み込み(JVM内)およびHTTPデーモンの両方として存在できます。 JSONを知っているすべてのプログラムは、PHPコード、Java、Ruby、または.NETであってもElasticSearchデーモンにアクセスできます。
ここに含まれるソフトウェアを完全に理解したい人のために、私はこれを図に描いてみました:
ここには、3つのレベルが表示されます。 左側は、コンパスに基づく現在のスタックです。 右側は、ElasticSearchに基づくスタックです。 ただし、Grailsプラグインの関数の分布はまったく同じではありません(たとえば、CompassはJavaオブジェクトをLuceneドキュメントに変換できますが、ElasticSearchは変換できません)。
Searchableを使用している不幸な人々(そしてこれらも私たちもそうだった)にとって今、何が輝いているのか?
- Searchableは開発されていません。 不思議のプラグインは安定していますが、そうであれば-バグ修正を待たないでください。
- コンパスは開発されていません。 Lucene 3をサポートするバージョンはありません。
- Lucene 3なし-多くのバグ修正と新機能はありません。 そして、機能が非常に必要です-少なくとも形態の改善。
- 検索可能な機能はすでに欠落しています。
- ElasticSearch機能はまだGrailsに適切に統合されていません。
- 設定による検索可能な最大互換性
- ユーザーの透明性(ElasticSearchの仕組みを理解する必要はありません)
- ユーザーが構成するための最小要件(インストール済み-起動済み)。
プラグインはどこで入手できますか?
- 安定版-Grailsリポジトリ:
grails install-plugin elasticsearch
- Manuarii Steinによるプラグインのメインスレッド
- 私のプラグインブランチ
次のようにGithubからコードをインストールできます。
- Grailsアプリケーションが既に動作していると仮定します。
- gitとbuildをいじる気がなければ、既にパッケージ化されたプラグインを置くことができます:
grails install-plugin https://github.com/downloads/spn/elasticsearch-grails-plugin/grails-elasticsearch-0.14.2.2.zip
- 自分で組み立てたい場合、これはもう少し複雑です:
wget https://github.com/spn/elasticsearch-grails-plugin/tarball/master tar xvzf spn-elasticsearch-grails-plugin-3fde6c4.tar.gz cd spn-elasticsearch-grails-plugin-3fde6c4 grails package-plugin
grails run-app
プラグインのあるフォルダー内。