Как заставить Solr работать над copyField?

Я не знаю, почему мой copyField не работает. Вот моя схема:

<field name="name" type="text_name" indexed="true" stored="true" multiValued="true"/>       

<copyfield source="name" dest="nameSuggest"/>
<field name="nameSuggest" type="textNamePhrase" stored="true" multiValued="true" indexed="true"/>

<fieldType class="solr.TextField" name="textNamePhrase" positionIncrementGap="100">
   <analyzer>         
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>  
   </analyzer>              
</fieldType>
<fieldType name="text_name" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />        
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.ApostropheFilterFactory"/>        
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />        
     <filter class="solr.ApostropheFilterFactory"/>  
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

У меня есть настройка предложения, чтобы сделать предложение в поле nameSuggest. Если я загружаю свои документы и сохраняю теги copyField, предложение не работает (результаты не возвращаются). Однако, если я удалю и загружу данные с обоими полями: name и nameSuggest (клиент дублирует эти поля), тогда это предложение сработает.

Можете ли вы сказать, что не так с моим copyField? Как узнать, заполнено ли поле nameSuggest или нет? Я не вижу, чтобы он возвращался из моего запроса.

Спасибо,


person Sean Nguyen    schedule 10.06.2014    source источник
comment
<copyfield.. полностью пишется строчными буквами. Может быть, это проблема? Не могли бы вы проверить, работает ли он с <copyField, как указано в документации SchemaXml?   -  person rchukh    schedule 11.06.2014


Ответы (1)


  1. Ваши элементы <field> должны находиться внутри элемента <fields>.

  2. Поместите свой элемент <copyfield> ПОСЛЕ закрытия элемента <fields>.

Что-то типа:

<fields>
  <field name="name" type="text_name" indexed="true" stored="true" multiValued="true"/>       
  <field name="nameSuggest" type="textNamePhrase" stored="true" multiValued="true" indexed="true"/>
</fields/>

<copyfield source="name" dest="nameSuggest"/>

Чтобы узнать, заполнено ли индексированное поле, вы можете использовать обозреватель схемы в Solr:

http://localhost:8983/solr/#/[CORENAME]/schema-browser

или запросите компонент терминов

http://localhost:8983/solr/[CORENAME]/terms?terms.fl=name&terms.regex=.*&terms.regex.flag=case_insensitive&wt=json&omitHeader=true
person qux    schedule 10.06.2014
comment
Я попробовал это, и это все еще не работало. Мой клиент использует двоичный файл для загрузки документов, может ли это быть проблемой? - person Sean Nguyen; 11.06.2014