SOLR: одновременный поиск на разных языках - PullRequest
0 голосов
/ 29 октября 2011

У меня есть экземпляр Solr, который получает и индексирует данные о компаниях из БД.Данные БД об одной компании могут быть предоставлены на нескольких языках (например, английском и русском). Все компании, конечно же, имеют уникальный ключ, который также является уникальным ключом в индексе solr.Мне нужно представить solr search сразу на всех языках.

Как это сделать?1. Многоядерный?Я построил два отдельных ядра с данными каждого языка, но я не могу искать по двум индексам одновременно.

localhost:8983/solr/core0/select?shards=localhost:8983/solr/core0/,localhost:8983/solr/core1/&indent=true&q=*:*&distributed=true

или

localhost:8983/solr/core0/select?shards=localhost:8983/solr/core0/,localhost:8983/solr/core1/&indent=true&id:123456

не дает результатов.в то время как поиск в каждом ядре успешен.

  1. Включение поля имени (например) в качестве многозначного не является решением, поскольку данные данных другого языка из БД получают разными процедурами.И значение просто переписано.

Ответы [ 2 ]

0 голосов
/ 31 октября 2011

Похоже, вы, возможно, используете DataImportHandler для загрузки ваших данных. Вы можете реализовать ответ @Mike Sokolov или реализовать многозначное решение с помощью клиента Solr. Вам понадобится написать некоторый пользовательский код на клиенте, например SolrJ (или один из других клиентов, перечисленных в IntegratingSolr в Solr Wiki), чтобы получить оба языка в отдельных запросах из вашей базы данных а затем проанализировать данные обоих результатов в общий набор данных / результатов, который можно преобразовать в один документ Solr.

0 голосов
/ 30 октября 2011

Я не уверен насчет многоядерного компонента, но вы рассматривали возможность создания двух полей в одном ядре - по одному для каждого языка? Затем вы можете объединить с «ИЛИ», которое является значением по умолчанию, поэтому запрос для:

en:"query test here" OR ru:"query test here"

будет примером

...