Я пытаюсь выполнить частичный поиск по полю в solr. my_id: ABC_00123
Я хочу найти 123 и увидеть этот элемент. Я не могу заставить его работать без использования поля my_id в запросе.
В моей схеме. xml Я поставил:
<fieldType name="text_ngrm" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="50" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
Затем (я не уверен, что это необходимо):
<field name="_text_ngrm_" type="text_ngrm" indexed="true" stored="false"/>
У меня также есть:
<field name="my_id" type="text_ngrm" indexed="true" stored="true"/>
Наконец:
<copyField source="my_id" dest="_text_ngrm_"/>
Для запроса это работает: my_id: 223
Но 223 сам по себе этого не делает. У меня такое чувство, что это связано с определением copyField.
Единственный способ заставить его работать - это изменить:
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
<lst name="defaults">
<str name="df">_text_ngrm_</str>
</lst>
</initParams>
Но это нарушает все мои другие поиски по умолчанию . Есть ли способ добавить, например:
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
<lst name="defaults">
<str name="df">_text_</str>
<str name="df">_text_ngrm_</str>
</lst>
</initParams>
Спасибо за любую помощь