2017-09-14 48 views

回答

1

由于与DSE Graph和DSE Search的集成,没有特殊的Gremlin语法来实现这一点。要在DSE图表中完成此操作,您需要更改顶点标签的SOLR核心以将所需的过滤器添加到分析仪链中。像下面的内容可以使用:

ALTER SEARCH INDEX SCHEMA ON graph_name.vertex_label_p 
ADD types.fieldType [ @name='phonetic' , @class='org.apache.solr.schema.TextField' ] 
    WITH 
    $${ 
     "analyzer": [ 
      { 
      "filter": [ 
       { "class": "solr.LowerCaseFilterFactory" }, 
       { 
       "class": "solr.BeiderMorseFilterFactory", 
       "nameType": "GENERIC", 
       "ruleType": "APPROX", 
       "concat": "true", 
       "languageSet": "auto" 
       } 
      ], 
      "tokenizer": { "class": "solr.StandardTokenizerFactory" } 
      } 
     ] 
     }$$; 

...然后让这些更改生效...

RELOAD SEARCH INDEX ON graph_name.vertex_label_p; 

我们有其他用户使用BMPM与DSE搜索,但我不意识到任何人使用它与Graph到目前为止。

随着任何SOLR扩展添加到分析仪,您可能会看到一些硬件利用率的增加,特别是CPU。

+0

非常感谢@jlacefie的答案。考虑到我在Solr的天真,这似乎并不是直截了当的,我会在接下来的几周尝试它,一旦我感觉舒服的摆弄内部。一个简单的问题是,在这样做之后,索引是否会自动拾取?或者我应该在发起我的gremlin查询之前单独查询solr? – Phani

+0

如果您使用属性的has语句,则应使用索引。不应该有需要直接执行SOLR查询。 – jlacefie

+0

我已将前两行更改为'ALTER SEARCH INDEX SCHEMA ON MyGraph.Person_p_search ADD types.fieldType [@ name ='callingName',@ class ='org.apache.solr.schema.TextField']'但它不编译。我找不到要在哪个键空间上运行此CQL命令!我已经尝试了DSE Studio中的MyGraph Notebook中的所有密钥空间。但没有运气。我使用'schema.vertexLabel('Person')。index('search')。search()。by('callingName')。asText()。add()'创建了我的搜索索引。 – Phani