Я создаю проект Django, для которого нужны функции поиска, и пока там django.contrib.search
, я должен выбрать приложение для поиска. Итак, что лучше? Под "лучшим" я имею в виду...
Вот некоторые приложения, о которых я слышал, пожалуйста, сообщите другим, если вы знаете о них:
Я также хотел бы избежать использования сторонней поисковой системы (например, Google SiteSearch), потому что некоторые данные, которые я хотел бы индексировать, предназначены только для членов сайта и не должны быть общедоступными.
Отъезд Haystack Search - новый слой абстракции поиска на основе модели, который в настоящее время поддерживает Xapian, Solr и Whoosh. Похоже, он хорошо поддерживается и документируется.
Джастин, я сначала попробую djangosearch: над ним работает Джейкоб Каплан-Мосс (ведущий разработчик Django).
Потенциальные опасности:
Потенциальные преимущества:
django.contrib.search
".Я ищу то же самое, что и многие другие люди. Позвольте надеяться, что django.contrib.search будет добавлен в ближайшее время.
Тем временем, это то, что я нашел:
Для меня большинство выглядит довольно сложно и, честно говоря, немного сложнее реализовать. Мне было бы интересно узнать, что вы думаете об этом.
Кодовая страница google для djangosearch указывает, что она больше не находится в активной разработке и предлагает haystack или solango.
Я бы рекомендовал Sphinx для полнотекстового поиска и агрегации, а django-sphinx достаточно хорош для использования в производстве. Мы обнаружили, что Sphinx был наименее ресурсоемким и быстрым способом индексирования и поиска наших документов, а django-sphinx был красивой оболочкой поверх клиента sphinx.
Группа по агрегации особенно хороша, если, например, вы хотите отобразить, сколько документов с определенным тегом или определенным автором (или обоими) соответствовали поиску. В обновлениях атрибутов памяти также были удобны, особенно для немедленного удаления удаленных статей.
Спасибо, Гарт. Я видел, что djangosearch хотел стать официальным поиском Django, но я не решался использовать его, потому что не мог найти никакой документации! К счастью, там README в subversion, который я раньше не видел, и это делает API очень крутым:
# set up the model
class Event(models.Model):
title = models.CharField(max_length=255)
date = models.DateField()
is_outdoors = models.BooleanField()
index = djangosearch.ModelIndex(text=['title'],
additional=['date', 'is_outdoors'])
# run a search
results = Event.index.search("django conference")
Мне просто нужно было очень быстрое решение, которое не было проблемой для внутреннего приложения.
Я нашел статью добавление поиска в Django в оснастке, и это сработало великолепно для меня!
Очевидно, что ему не хватает скорости, масштабируемости и возможностей реальных проектов, таких как Haystack, но это проще настроить, и мне действительно не нужно ничего, кроме ключевого слова AND-search.
Возможно, вам стоит подумать о том, чтобы позволить Yahoo делать всю тяжелую работу с их созданием собственной службы поиска (BOSS). Вот отличный пост в блоге, в котором вы просматриваете процесс: http://www.peterkrantz.com/2008/yahoo-search-in-django/
Вы можете посмотреть поиск Django Solr (он же "Solango" ), который поставляется с хорошей документацией, чтобы вы начали..
Похоже, что здесь все пропустили django-xappy
После быстрой оценки всех существующих аддонов поиска для Django я нашел это наиболее гибким и простым в использовании. Он неровный по краям в нескольких местах, но он по-прежнему является лучшим способом использования возможности Xapian поисковой системы внутри проектов Django.
Думаю, мне придется дать крик Джапиану.
Это твердое тело... просто потяните вниз распределение источника и загляните внутрь. Верхний код надписи, не очень много комментариев tho..
Это еще молодой программный проект, но я думаю, что сообщество django должно выбросить его за этот.
Если у вас есть большой объем данных для индексирования или вы ожидаете высокий трафик, я бы предложил использовать внешнюю поисковую систему, например Solr. Таким образом, вы будете придерживаться принципа "ничего общего" и сможете самостоятельно масштабировать компоненты своего сайта.
Если вы хотите использовать стороннюю поисковую систему, я могу порекомендовать Yahoo BOSS и django-bosssearch.
Yahoo BOSS - платная услуга, но это экономит вам настройку и обслуживание другого программного обеспечения поиска на вашем сервере.
Спасибо Джо,
Мы решили пойти с Tsearch2 и пользовательским адаптером postgres. Tsearch2 не нуждается в дополнительном процессе для запуска, что было удобно, так как мы находимся на хосте WebFaction с ограниченной памятью... Это еще не сделано, но, похоже, это хорошее решение...