Solr: как мне проиндексировать и найти несколько полей? - PullRequest
0 голосов
/ 02 июня 2010

Я установил мою первую «установку» Solr, где каждый указатель (документ) представляет музыкальное произведение (со свойствами, такими как число (int), заголовок (строка), версия (строка), композиторы (строка) и ключевые слова (строка)). Я установил поле 'title' в качестве поля поиска по умолчанию.

Однако, что мне делать, если я хочу выполнить запрос по всем полям? Я хотел бы дать пользователям возможность поиска во всех полях, и, насколько я понял, для этого есть как минимум два варианта:

(1) Укажите, к каким полям должен быть выполнен запрос.

(2) Настройте конфигурацию Solr с помощью copyfields, чтобы значения, добавленные в каждое из полей, были скопированы в поле типа «catch-all», которое можно использовать для поиска. Однако в этом случае я не уверен, как все обернется, если принять во внимание, что типы данных не одинаковы для различных полей (различные поля в меньшей степени будут проходить через фильтры, но как поле копирования). значения берутся из их исходных полей до того, как значения будут пропущены через фильтры их исходных полей, мне нужно будет применить один единственный фильтр ко всем значениям в поле копирования. Это, опять же, приведет к тому, что целые числа будут «отфильтрованы» как строки бы).

Это тот случай, когда я должен использовать copyfields? На первый взгляд кажется более «гибким», чем просто поиск по всем полям. Тем не менее, может быть, есть стоимость?

Все отзывы приветствуются! Спасибо!

1 Ответ

1 голос
/ 03 июня 2010

При выполнении поля копирования данные в поле назначения будут проиндексированы с использованием анализатора, определенного для этого поля. Поэтому, если вы определяете поле назначения как текстовые данные, лучше всего копировать в него только текстовые данные. Так что да, копировать целое число в том же поле, вероятно, не имеет смысла. Но действительно ли вы хотите, чтобы пользователь мог искать ваше поле «число» в поиске по умолчанию? Это имеет смысл для заголовка, составителя и ключевого слова, но, возможно, не для целочисленного поля, которое, вероятно, представляет идентификатор в вашей базе данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...