普通的lable筛选 match (e:A) where e:人物 where e.name =~’.德.’ return e limit 100; 使用apoc对name建立全文索引 CALL apoc.index.addAllNodes(‘name_index’, { A:[“name”]}, {autoUpdate:true}); 查询的语句是 CALL apoc.index.nodes(‘name_index’,’+A.name:德’) YIELD node AS airport, weight RETURN airport, weight LIMIT 10; 此时怎样使用’人物‘作为初步筛选,然后使用apoc根据全文索引进行查找呢? 还是说需要对每一个需要用到的标签一同建立全文索引才可以,比如 CALL apoc.index.addAllNodes(‘name_index’, { A:[“name”], 人物:[“name”]}, {autoUpdate:true}); 但这么做似乎并不能通过更多的标签筛选来加快查询吧,比如标签是A_人物_电影呢? Thank you!
@graphway 请问 CALL apoc.index.search(‘name_index’,‘Entity.name:刘福*’) YIELD node AS e with e match(e:人物) RETURN e order by e.score DESC limit 10; 这么用是可以的,但无法对查询加速
但这么用 match(e:Entity) where e:人物 and e.type = 2 with e CALL apoc.index.search(‘name_index’,‘Entity.name:刘福*’) YIELD node AS ee RETURN ee order by ee.score DESC limit 10; 好像不行。 我该怎样把with e的e传递给apoc.index.search呢? (我希望在模糊搜索前进行筛选(标签筛选和模式索引都很快),以加快查询速度,)
@graphway 那么with e match(e:人物) RETURN e order by e.score DESC limit 10; 纯粹是根据用户的输入对结果进行筛选是吧(无法起到加快查询速度的作用)?