1

私はphpライブラリを介してNeo4jを使用するサイトで作業しています。私を悩ませているのは、私の提案が非常にゆっくりと表示されることです(1〜3秒)。それらは瞬時にalmoastに表示されるはずです。結果を表示するためにJqueryuiAutocompleteを使用しており、次の暗号クエリを使用しています。

$query = "START n = node:Destination('name:*')
          WHERE  ( n.name =~ '(?i).*".$input.".*' OR n.name2 =~ '(?i).*".$input.".*' ) AND has( n.published )
          RETURN n
          LIMIT 6";

誰かが最適化のアイデアを持っていますか、または誰かが私が間違っていることを教えてもらえますか?

4

2 に答える 2

0

なぜ、すべての Destination ノード内を検索し、既に挿入された入力を区別する where 句だけを検索するのですか? それを定義句に入れることができます:

$query = "START n = node:Destination('name:".$input."*'),n2 = node:Destination('name2:".$input."*')
          WHERE   has( n.published ) AND has (n2.published)
          RETURN n,n2
          LIMIT 6";

このクエリで時間を測定していただけますか?

于 2012-12-06T11:25:55.253 に答える
0

@maxdemarzi からの回答

START n = node:Destination('name:*') <--悪い

ここで検索例を見てみましょう=> http://maxdemarzi.com/2012/11/14/crunchbase-on-neo4j/

query = "name:*#{params[:term]}* OR name2:*#{params[:term]}*"

get '/search' do 
  content_type :json
  neo = Neography::Rest.new    

  cypher = "START me=node:node_index({query}) 
            RETURN ID(me), me.name
            ORDER BY me.name
            LIMIT 15"
  query = "permalink:*#{params[:term]}* OR name:*#{params[:term]}*"
  neo.execute_query(cypher, 
                    {:query => query })["data"].
                      map{|x| 
                           { label: x[1], 
                             value: x[0] }
                         }.to_json   
end
于 2012-12-06T11:26:32.353 に答える