これにはいくつかの方法があります。
FrobberOfBits が言ったように、Neo4j には「レガシー インデックス」と呼ばれるものがあり、バックグラウンドで Lucene を使用して一般的なもののインデックスを作成します。新しいスキーマ インデックスはサポートしています。残念ながら、これらは完全一致に基づいています (ただし、Neo4j 2.3.x では多少変更されると確信しています)。
Neo4j は、=~
演算子による文字列のパターン マッチングをサポートしていますが、これらのクエリはインデックス化されていません。したがって、パフォーマンスはデータベースのサイズによって異なります。
searchkick
モデルでElasticsearchのインデックスを定義できるgemをよくお勧めします。次に、検索を行うメソッドを呼び出すだけで、Model.search
最初に Elasticsearch にクエリを実行してノード ID を取得し、Neo4j.rb を介してそれらのノードをロードします。neo4j-searchkick
gem経由で使用できます: https://github.com/neo4jrb/neo4j-searchkick
最後に、NLP を行っていて、テキストから重要な単語を抽出しようとしている場合は、Tag
/Word
ラベルを作成し、ノードからこれらの NLP 抽出ノードへの関係を作成して、後でそれらのノードに基づいて検索できるようにすることができます。共通のタグ ノードの数/タイプに基づいて、あるテキスト ノードから別のテキスト ノードへの推奨事項を作成することもできます。