История до сих пор:
Решено пойти с Xapian в качестве поискового сервера, потому что у него есть все функции поисковой системы, которые я искал, знает о Unicode, имеет несколько зависимостей и не требует никакой раздутой установки приложения-сервера поверх нее.
Пробовал Django и Haystack (плюс xapian-haystack, код клеточного кода для привязки Haystack к Xapian), потому что он был рекламирован в некоторых блогах как "работающий". Не работал. Ни django-haystack, ни проект xapian-haystack не обеспечивают комбинацию версий, которая фактически работает вместе. MASTER из обоих проектов дает ошибку от 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 (я дважды проверял это), может быть, потому что unit-tests на самом деле проверяют очень простые случаи и вообще не имеют кромки.
Пробовал Djapian. Исходный код пронизан орфографическими ошибками (обратите внимание на имена переменных, а не на комментарии), документация также пронизана неоднозначностью и устаревшей информацией, которая никогда не приведет к созданию рабочей установки. Неудивительно, что пользователи редко запрашивают функции, но как заставить их работать в первую очередь.
Далее на пластине: изучение Solr (установка среды Java плюс Tomcat дает мне головные боли, машина ограничена RAM и CPU), или Lucene (немного меньше головных болей, но все же).
Прежде чем я продолжу проводить больше времени с помощью решения, которое может или не может работать как рекламируемое, я хотел бы знать: Кто-нибудь когда-либо получал реальное, реальное решение поиска, работающее в Django? Я серьезно. Я нахожу, что это действительно разочаровывает чтение о "больших проблемах, которые в основном решаются", а затем понимая, что вы никогда не получите рабочую установку из исходного кода, потому что на самом деле все блоггеры, занимающиеся этими "в основном решаемыми проблемами", никогда не проходили мимо базовой установки и копирование вставных официальных руководств.
Итак, вот требования:
- должен иметь возможность искать 10-100 терминов в одном запросе
- должен обрабатывать + (должен присутствовать термин) и - (термин не должен присутствовать), AND/OR
- должен обрабатывать произвольную группировку (т.е. круглые скобки вокруг AND/OR)
- должен разрешать фильтрацию Django-ORM до или после полнотекстового поиска (т.е. до/после обработки результатов с полным набором фильтров, о которых знает Django)
- альтернативно, должно быть средство для массового сбора набора результатов и преобразования его в QuerySet
- должен быть легким на машине, поэтому желательно, чтобы на нем не было встроенного JVM-сервера и Java-приложения.
Есть ли что-нибудь, что делает это? Меня не интересуют анекдотические данные или ссылки на некоторые сообщения в блоге, которые утверждают, что они должны работать. Я хотел бы услышать от кого-то, у кого действительно есть полностью функциональная установка, работающая в реальном мире, в реальных условиях, с реальными запросами.
EDIT:
Позвольте мне еще раз повторить, что меня не так интересуют анекдотические свидетельства того, что кто-то, где-то, имеет несколько запущенную установку, работающую с неопределенными свойствами. Я уже отправился туда, я прочитал все сообщения в блогах, списки рассылки, я связался с авторами, но когда дело дошло до реальной реализации реальных сценариев, ничто никогда не работало как рекламируемое.
Кроме того, и нижеприведенный пользователь добавил, что, учитывая совокупную стоимость владения каким-либо проектом, мне определенно не интересно слышать, что кто-то, где-то был в состоянии вытащить его, как только поставщик парашютно в неизвестном количестве специалистов для обезьян-патча всей установки с конкретными знаниями домена, которые нигде не документированы.
Итак, пожалуйста, если вы утверждаете, что у вас есть действующая установка, которая действительно удовлетворяет минимальным требованиям для полноценного поиска (см. требования выше), предоставьте следующее, чтобы мы могли извлечь выгоду из поискового решения для Django, которое на самом деле решает проблему:
- точный дистрибутив Linux, версия для выпуска,
- точная версия версии Haystack (или эквивалентная) и версия версии бэкэнда поиска,
- точная версия версии поисковой системы
- публично (!) доступная документация, как настроить все компоненты точно так, как была настроена ваша установка, чтобы выполнялись минимальные требования.
Спасибо.