0

Ruby on Rails プロジェクトのバックエンドとして neo4j を使用しており、いくつかの検索機能を実装しようとしています。ベローは私のモデルです:

class Entity < Neo4j::Rails::Model
    property :name
    has_n(:friends).to(Entity)
    index :name, :type => :fulltext
end

以下のレコードを作成しました。

Neo4j::Transaction.run do
  Entity.destroy_all

  tony = Entity.new :name => "Tony Soprano"
  paulie = Entity.new :name => "Paulie Gualtieri"
  robert = Entity.new :name => "Robert Baccalier"
  silvio = Entity.new :name => "Silvio Dante"

  tony.friends << paulie << robert << silvio
  tony.save
end

最後に、私の検索方法は次のようになります。

def search
  terms = params[:q]

  render :json => Entity.all(:name => terms, :type => :fulltext)
end

上記の検索方法を実行すると、次のエラーが発生します。no index on field type

Neo4j-Rails ガイドの全文検索セクションを読みましたが、これを機能させるために何が欠けているのかわかりません。私の理解では、モデルを構成した方法のために、 :name プロパティにインデックスを付ける必要があります。

4

1 に答える 1

1

どのバージョンの neo4j.rb を使用していますか? 2.0 を使用している場合は、Neo4j Github Wiki Pagesを参照してください。

2.0 を使用してそれを解決する方法の例を次に示します。

Entity.all("name: hello*", :type => :fulltext).count

これは Neo4j.rb 1.3.1 でも機能すると思います。ハッシュ クエリは、全文検索では機能しません。

次のクエリ:

Entity.all(:name => "hello*", :type => :fulltext).count

正確な lucene インデックスを使用し、2 つのフィールドをクエリします:nametype.

于 2012-06-14T07:01:19.640 に答える