1

我正在一个通过 php 库使用 Neo4j 的网站上工作。困扰我的是我的建议出现得很慢(1-3 秒)。它们应该几乎立即出现。我正在使用 Jquery ui Autocomplete 来显示结果,以及以下密码查询:

$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 回答