пользовательская индексация solr с использованием анализаторов от janusgraph - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь создать индекс для данных с пробелами и специальными символами в solr из Janusgraph для поиска по шаблону.для обработки пробелов и специальных символов мне нужно добавить собственные анализаторы для схемы.поэтому я попытался, как указано в документации Solr. Это дает мне ошибку, как нет такого типа параметра свойства.

mgmt = graph.openManagement()
string = mgmt.makePropertyKey('string').dataType(String.class).make()
text = mgmt.makePropertyKey('text').dataType(String.class).make()
mgmt.buildIndex('string', Vertex.class).addKey(string, Mapping.STRING.asParameter(),Parameter.of(ParameterType.STRING_ANALYZER.getName(),'org.apache.lucene.analysis.standard.StandardTokenizer')).buildMixedIndex("search")
mgmt.buildIndex('text', Vertex.class).addKey(text,Mapping.TEXT.asParameter(), Parameter.of(ParameterType.TEXT_ANALYZER.getName(), 'org.apache.lucene.analysis.core.WhitespaceTokenizer')).buildMixedIndex("search")
mgmt.commit()
Error: error in /tmp/Circuit_Equipment_Hierarchy_Graph_Initialization.groovy at [169: mgmt.buildIndex(Index_Prefix + G_Property, Vertex.class).addKey(G_PropertyKey, Mapping.TEXT.asParameter(), Parameter.of(ParameterType.TEXT_ANALYZER.getName(), 'org.apache.lucene.analysis.core.KeywordTokenizerFactory')).buildMixedIndex("search")] - No such property: ParameterType for class: groovysh_evaluate

Я бы тоже хотел попробовать следующее.если кто-нибудь может подсказать, что можно сделать, это действительно очень помогает.

 mgmt = graph.openManagement()
 string = mgmt.makePropertyKey('string').dataType(String.class).make()
 text = mgmt.makePropertyKey('text').dataType(String.class).make()
 mgmt.buildIndex('string', Vertex.class).addKey(string, 
 Mapping.STRING.asParameter(), Parameter.of(ParameterType.STRING_ANALYZER.getName(),'org.apache.lucene.analysis.standard.StandardTokenizer')).buildMixedIndex("search")
mgmt.buildIndex('text', Vertex.class).addKey(text, Mapping.TEXT.asParameter(), Parameter.of(ParameterType.TEXT_ANALYZER.getName(), 'org.apache.lucene.analysis.core.WhitespaceTokenizer')).buildMixedIndex("search")
  mgmt.commit()

Но мне нужно использовать фильтры после анализа поля в solr, поэтому я настроил solr schema.xml следующим образом

  <fieldType name="string_rev" class="solr.TextField" 
 sortMissingLast="true">
  <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.PatternReplaceFilterFactory" pattern="[^A-Za-z0-9*]" 
replacement="" replace="all" />
    <filter class="solr.ReversedWildcardFilterFactory" />
</analyzer>
<analyzer type="query">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.PatternReplaceFilterFactory" pattern="[^A-Za-z0-9*]" 
 replacement="" replace="all" />
</analyzer>
</fieldType>

Как полностью настроить "string_rev" в sjanusgraph, чтобы мой запрос анализировался стандартным токенизатором и фильтрованным с помощью patternreplace и в нижнем регистре

...