Как группировка может быть достигнута в Solrnet / Solr (Lucene)? - PullRequest
1 голос
/ 12 августа 2010

У меня есть файлы Lucene, проиндексированные в соответствии с идентификаторами страниц (UniqueKey). и один документ может иметь несколько страниц. Теперь, когда пользователь выполняет поиск, он предоставляет нам страницы, соответствующие критериям поиска.

Я использую Lucene.Net 2.9.2

У нас есть 2 проблемы ...

1- Размер файла составляет около 800 ГБ, и он имеет 130 миллионов строк (страниц), поэтому время поиска было очень медленным (все запросы занимали более минуты (нам нужно только вернуть ограниченные строки за раз)

Чтобы преодолеть проблему с производительностью, я перешел на SOLR, которая разрешила проблему с производительностью (что довольно странно, поскольку я не использую какие-либо дополнительные функции, предоставляемые SOLR, такие как sharding и т. Д. - возможно, Lucene.NET 2.9.2 не действительно эквивалентно производительности по сравнению с той же версией JAVA ??), но теперь у меня есть другая проблема ...

2- Отдельный «документ lucene» - это одна страница, но я хочу показать результаты, сгруппированные по «реальным документам». Сколько результатов мне нужно вернуть, должно быть настроено на основе «реальных документов», а не «страниц» (потому что именно так я хочу показать пользователю).

Итак, допустим, мне нужно 20 «реальных документов» и ВСЕ страницы в них, которые соответствуют критериям поиска (не имеет значения, если один документ содержит 100 страниц, а другой - только 1).

Из того, что я смог получить на форумах SOLR, можно сказать, что этого можно добиться с помощью патча SOLR-236 (свертывание полей), но я не смог правильно применить патч с транком (выдает много ошибок).

Это действительно бес для меня, и у меня не так много времени, так что кто-нибудь может отправить мне бинарный файл SOLR 1.4.1 с этим патчем или помочь мне, если есть какой-либо другой способ.

Я был бы очень признателен. Спасибо !!

Ответы [ 3 ]

0 голосов
/ 17 декабря 2010

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

0 голосов
/ 17 декабря 2010

Вы также можете взглянуть на SOLR-1682: реализовать CollapseComponent , я еще не тестировал его, но, насколько я знаю, он также решает проблему свертывания.

0 голосов
/ 12 августа 2010

Если у вас есть проблемы с патчем свертывания, то трекер проблем Solr - это канал, который сообщает о них.Я вижу, что другие люди в настоящее время имеют некоторые проблемы с этим , поэтому я предлагаю принять участие в его разработке.документы », затем создайте свой индекс вокруг этих« реальных документов », а не их отдельных страниц.

...