Я установил свою первую «установку» Solr, где каждый индекс (документ) представляет собой музыкальную работу (со свойствами типа number (int), title (string), version (string), composers (string) и keywords (строка)). Я установил поле «title» как поле поиска по умолчанию.Solr: как мне индексировать и искать несколько полей?
Однако, что мне делать, когда я хотел бы сделать запрос во всех полях? Я хотел бы предоставить пользователям возможность поиска во всех полях, и, насколько я понял, существует как минимум два варианта:
(1) Укажите, в каких полях запрос должен быть сделан против ,
(2) Настройте конфигурацию Solr с помощью полей копий, чтобы значения, добавленные в каждое из полей, были скопированы в поле «catch-all», которое можно использовать для поиска. Однако в этом случае я не уверен, как все получится, когда я буду учитывать, что типы данных не все одинаковы для разных полей (различные поля будут в меньшей степени проходить через фильтры, но как копирование значения берутся из их исходных полей до того, как значения будут выполняться через фильтры исходных полей, я должен был бы применить один единственный фильтр ко всем значениям в поле копирования. Это также приведет к тому, что целые числа будут «отфильтрованы» так же, как строки бы).
Это случай, когда я должен использовать copyfields? На первый взгляд кажется, что это немного более «гибкий», а просто поиск по всем полям. Однако, может быть, есть стоимость?
Все отзывы оценены! Благодаря!
Благодарим вас за ответ. Однако я задаюсь вопросом, есть ли у него какие-либо последствия (например, по производительности) для поиска по нескольким полям вместо поиска в одном поле на основе скопированных значений полей (copy-field)? – sbrattla
Производительность, я не думаю, что существует значительная разница между поиском в другом поле VS много раз в одном поле. Lucene должен выполнять двоичный поиск для каждого члена запроса. Независимо от того, выполняет ли n поиск в одном и том же поле или n поисков в разных полях, не должно быть разным. –
Спасибо за ваш вклад! – sbrattla