Какое лучшее приложение для поиска Django?

Я создаю проект Django, для которого нужны функции поиска, и пока там django.contrib.search, я должен выбрать приложение для поиска. Итак, что лучше? Под "лучшим" я имею в виду...

  • легко установить/настроить
  • имеет API-интерфейс Django или, по крайней мере, Python-API
  • может выполнять достаточно сложные поисковые запросы.

Вот некоторые приложения, о которых я слышал, пожалуйста, сообщите другим, если вы знаете о них:

Я также хотел бы избежать использования сторонней поисковой системы (например, Google SiteSearch), потому что некоторые данные, которые я хотел бы индексировать, предназначены только для членов сайта и не должны быть общедоступными.

Ответ 1

Отъезд Haystack Search - новый слой абстракции поиска на основе модели, который в настоящее время поддерживает Xapian, Solr и Whoosh. Похоже, он хорошо поддерживается и документируется.

Ответ 2

Джастин, я сначала попробую djangosearch: над ним работает Джейкоб Каплан-Мосс (ведущий разработчик Django).

Потенциальные опасности:

  • Домашняя страница предупреждает, что API может быть не совсем стабильным.

Потенциальные преимущества:

  • "Долгосрочная цель состоит в том, чтобы это стало django.contrib.search".

Ответ 3

Я ищу то же самое, что и многие другие люди. Позвольте надеяться, что django.contrib.search будет добавлен в ближайшее время.

Тем временем, это то, что я нашел:

Для меня большинство выглядит довольно сложно и, честно говоря, немного сложнее реализовать. Мне было бы интересно узнать, что вы думаете об этом.

Ответ 4

Я бы рекомендовал Sphinx для полнотекстового поиска и агрегации, а django-sphinx достаточно хорош для использования в производстве. Мы обнаружили, что Sphinx был наименее ресурсоемким и быстрым способом индексирования и поиска наших документов, а django-sphinx был красивой оболочкой поверх клиента sphinx.

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

Ответ 5

Кодовая страница google для djangosearch указывает, что она больше не находится в активной разработке и предлагает haystack или solango.

Ответ 6

Спасибо, Гарт. Я видел, что 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")

Ответ 7

Мне просто нужно было очень быстрое решение, которое не было проблемой для внутреннего приложения.

Я нашел статью добавление поиска в Django в оснастке, и это сработало великолепно для меня!

Очевидно, что ему не хватает скорости, масштабируемости и возможностей реальных проектов, таких как Haystack, но это проще настроить, и мне действительно не нужно ничего, кроме ключевого слова AND-search.

Ответ 8

Возможно, вам стоит подумать о том, чтобы позволить Yahoo делать всю тяжелую работу с их созданием собственной службы поиска (BOSS). Вот отличный пост в блоге, в котором вы просматриваете процесс: http://www.peterkrantz.com/2008/yahoo-search-in-django/

Ответ 9

Похоже, что здесь все пропустили django-xappy

После быстрой оценки всех существующих аддонов поиска для Django я нашел это наиболее гибким и простым в использовании. Он неровный по краям в нескольких местах, но он по-прежнему является лучшим способом использования возможности Xapian поисковой системы внутри проектов Django.

Ответ 10

Вы можете посмотреть поиск Django Solr (он же "Solango" ), который поставляется с хорошей документацией, чтобы вы начали..

Ответ 11

Если у вас есть большой объем данных для индексирования или вы ожидаете высокий трафик, я бы предложил использовать внешнюю поисковую систему, например Solr. Таким образом, вы будете придерживаться принципа "ничего общего" и сможете самостоятельно масштабировать компоненты своего сайта.

Ответ 12

Думаю, мне придется дать крик Джапиану.

Это твердое тело... просто потяните вниз распределение источника и загляните внутрь. Верхний код надписи, не очень много комментариев tho..

Это еще молодой программный проект, но я думаю, что сообщество django должно выбросить его за этот.

Ответ 13

Спасибо Джо,

Мы решили пойти с Tsearch2 и пользовательским адаптером postgres. Tsearch2 не нуждается в дополнительном процессе для запуска, что было удобно, так как мы находимся на хосте WebFaction с ограниченной памятью... Это еще не сделано, но, похоже, это хорошее решение...

Ответ 14

Я нашел Djoosh, который полагается на внешнюю поисковую систему чистого питона Whoosh, чтобы хорошо работать с моим мозгом "Python".

Ответ 15

Если вы хотите использовать стороннюю поисковую систему, я могу порекомендовать Yahoo BOSS и django-bosssearch.

Yahoo BOSS - платная услуга, но это экономит вам настройку и обслуживание другого программного обеспечения поиска на вашем сервере.