Фасетный поиск без дублирования данных (без ETL) - PullRequest
1 голос
/ 07 июня 2011

Все решения, которые я видел до сих пор, включают дублирование данных с помощью nosql или datawarehousing.Есть ли более эффективные способы?

2011-06-07 РЕДАКТИРОВАТЬ: Когда я говорю, нет дублирования, я имею в виду не ETL либо.Я хотел бы извлечь данные непосредственно из основной базы данных.Это реляционное, но я вовремя меняюсь.

1 Ответ

1 голос
/ 07 июня 2011

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

Кроме того, он не очень точно вычисляет номера фасетов - иногда общее количество всех фасетов не совпадает сколичество документов в комплекте.Тем не менее, разница всегда невелика - я заметил колебания менее 100 для набора результатов из 10000-50000 документов.

Очевидно, что для использования этого патча вам придется создать свою собственную версиюSolr.Если вас это не устраивает, вы можете попробовать уже созданную версию, которую я использую.Я загрузил в свой SkyDrive как пропатченный .war-файл, так и мою папку «lib» (не уверен, нужен ли он последним и вносит ли патч какие-либо изменения в библиотеки, но на всякий случай, если они тоже есть).Также я должен отметить, что эту версию следует использовать только на свой страх и риск - они служат мне без каких-либо серьезных претензий, но я не могу гарантировать то же самое для других.Вот ссылка для скачивания .

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

...