История до сих пор:
Решил использовать Xapian в качестве поискового бэкэнда, потому что он имеет все функции поисковой системы, которые я искал, знает о Unicode, поиске корней, имеет мало зависимостей и не требует установки раздутого сервера приложений поверх него.
Пробовал Django и Haystack (плюс xapian-haystack, внутренний связующий код для привязки Haystack к Xapian), потому что в некоторых блогах он рекламировался как «работающий». Не работает. Ни django-haystack, ни проект xapian-haystack не предоставляют комбинацию версий, которая действительно работает вместе. МАСТЕР из обоих проектов выдает ошибку от Xapian, так что вообще не стабильно. Haystack 1.0.1 и xapian-haystack 1.0.x/1.1.0 не совместимы с API. Кроме того, в минимально работающей установке Haystack 1.0.1 и xapian-haystack MASTER любой сложный запрос дает нулевые результаты из-за ошибок либо в django-haystack, либо в xapian-haystack (это я перепроверил дважды), возможно, потому что юнит-тесты на самом деле тестировать очень простые случаи и вообще никаких пограничных случаев.
Пробовал Джапьян. Исходный код изобилует орфографическими ошибками (заметьте, в именах переменных, а не в комментариях), документация также изобилует неясностями и устаревшей информацией, которые никогда не приведут к работающей установке. Неудивительно, что пользователи редко спрашивают о функциях, а в первую очередь о том, как заставить их работать.
Далее на тарелке: изучение Solr (установка среды Java плюс Tomcat доставляет мне головную боль, машина ограничена оперативной памятью и процессором) или Lucene (немного меньше головной боли, но все же).
Прежде чем я продолжу тратить больше времени на решение, которое может работать или не работать так, как рекламируется, я хотел бы знать: кто-нибудь когда-нибудь получал реальное решение для поиска в реальном мире, работающее в Django? Я серьезно. Меня очень расстраивает чтение о «больших проблемах, в основном решаемых», а затем осознание того, что вы никогда не получите работающую установку из исходного кода, потому что, на самом деле, все блоггеры, занимающиеся этими «в основном решаемыми проблемами», никогда не проходили дальше базовой установки и копирование официальных руководств.
Итак, вот требования:
- должен уметь искать 10-100 терминов в одном запросе
- должен обрабатывать + (термин должен присутствовать) и - (термин не должен присутствовать), И/ИЛИ
- должен обрабатывать произвольную группировку (например, круглые скобки вокруг И/ИЛИ)
- должен разрешать фильтрацию Django-ORM до или после полнотекстового поиска (т.е. предварительная/пост-обработка результатов с полным набором фильтров, о которых знает Django)
- в качестве альтернативы должна быть возможность массовой выборки набора результатов и преобразования его в QuerySet.
- должен быть легким на машине, поэтому желательно без установки огромного JVM и сервера приложений на основе Java.
Есть ли что-нибудь, что делает это? Меня не интересуют неофициальные свидетельства или ссылки на некоторые сообщения в блогах, в которых утверждается, что это должно работать. Я хотел бы услышать от кого-нибудь, у кого действительно есть полнофункциональная установка, работающая в реальном мире, в реальных условиях, с реальными запросами.
ИЗМЕНИТЬ:
Позвольте мне еще раз повторить, что меня не очень интересуют неофициальные свидетельства того, что у кого-то где-то есть несколько запущенная установка, работающая с неопределенными свойствами. Я уже был там, я прочитал все сообщения в блогах, списки рассылки, я связался с авторами, но когда дело дошло до реальной реализации реальных сценариев, ничто никогда не работало так, как рекламируется.
Кроме того, и пользователь ниже также поднял этот вопрос, учитывая совокупную стоимость владения любого проекта, мне определенно не интересно слышать, что кто-то где-то смог осуществить это, как только поставщик десантировал неизвестное количество специалистов для обезьяны. -исправьте всю установку с конкретными знаниями предметной области, которые нигде не задокументированы.
Итак, пожалуйста, если вы утверждаете, что у вас есть работающая установка, которая на самом деле удовлетворяет минимальным требованиям для полноценного поиска (см. требования выше), предоставьте следующее, чтобы мы все могли извлечь выгоду из поискового решения для Django, которое действительно решает проблему. :
- точный дистрибутив Linux, версия выпуска,
- точная версия выпуска Haystack (или эквивалента) и версия выпуска поискового бэкэнда,
- точная релизная версия поисковика
- общедоступная (!) документация о том, как настроить все компоненты точно так, как была настроена ваша установка, чтобы выполнялись минимальные требования, указанные выше.
Спасибо.