Как использовать copyField (solr4) для создания поля, доступного для поиска по нескольким полям?

Я пытаюсь настроить copyField, но в документации довольно мало примеров синтаксиса.

Это то, что я пытался сделать, но в поле «все» нет документов после повторного импорта всех моих данных:

   <field name="all" type="text_en_splitting" indexed="true" stored="false" multiValued="true" termVectors="true" version="1.5" />
   <copyField source="id" dest="all"/>
   <copyField source="item_name" dest="all"/>
   <copyField source="item_brand" dest="all"/>
   <copyField source="short_description" dest="all"/>
   <copyField source="long_description" dest="all"/>
   <copyField source="catalog_names" dest="all"/>
   <copyField source="categories" dest="all"/>
   <copyField source="keywords" dest="all"/>
   <copyField source="attributes" dest="all"/>

Все, что мне действительно нужно, это:

У меня есть документы со всеми этими определенными полями (id, item_name, краткое/длинное описание и т. д.).

Я хочу выполнять поиск по большинству полей, но не сохранять значения (я просто возвращаю идентификатор документа).

So:

  • Нужно ли определять поле для каждого из этих атрибутов (имя_элемента, короткое/длинное описание и т. д.)?
  • Должен ли я копировать их все в одно поле, чтобы я мог выполнять поиск по всем этим полям? Это необходимо, верно?
  • Есть ли способ, которым я должен просто импортировать все эти поля в одно поле solr? Как должен выглядеть мой schema.xml?

В настоящее время у меня нет поисковых запросов по одному конкретному полю.


person David Parks    schedule 06.03.2013    source источник


Ответы (2)


Нужно ли определять поле для каждого из этих атрибутов?
Вам необходимо определить все поля любым способом, если вы хотите получить их значения.

Должен ли я копировать их все в одно поле, чтобы выполнять поиск по всем этим полям? Это необходимо, верно? Вам нужно будет скопировать их в одно поле и выполнить поиск по этому полю.

Есть ли способ просто импортировать все эти поля в одно поле solr? Как должен выглядеть мой schema.xml?
вы можете определить динамические поля и иметь одно поле копирования, чтобы копировать их в одно поле

person Jayendra    schedule 06.03.2013

Кажется, моя самая большая проблема в copyField заключалась в том, что мне нужно было удалить и повторно загрузить индекс, чтобы включить его. Достаточно было добавить документ, который заменяет существующий документ.

person David Parks    schedule 06.03.2013
comment
Да, почти каждый раз, когда вы вносите изменения в файл schema.xml, эти изменения не будут отражаться в проиндексированных документах до тех пор, пока документы не будут загружены повторно. - person Paige Cook; 06.03.2013