Какое приложение для поиска Django самое лучшее? [закрыто]


110

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

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

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

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



Обычно такие вещи, как «лучший», довольно субъективны, но у django действительно есть одно «лучшее» приложение для поиска, как показывает принятый ответ.

Если я полностью не понимаю django, это все еще запрос библиотеки и, следовательно, не по теме.
Джеффри Босбум

Ответы:


104

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


3
Haystack находится в стадии активной разработки, и с автором всегда можно связаться по электронной почте.
Том

2
Из проекта djangosearch: «Этот проект больше не находится в активной разработке. Если вы ищете приложение для полнотекстового поиска django, которое работает с несколькими поисковыми системами, обратите внимание на haystack. Если вы ищете что-то конкретное для Solr, вы можете хочу попробовать соланго »,
Эстебан Фельдман

Haystack в течение некоторого времени плохо поддерживался, если вообще поддерживался. Я рекомендую вам избегать этого на данном этапе. Возможно, они исправят это в будущем, но сейчас он в плохом месте.
Аарон Шиф

Я согласен, последняя версия haystack (2.1) вообще не работает с моей версией django 1.4 для python 2.7.
Крис Хоукс

19

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

Возможные опасности:

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

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

  • «Долгосрочная цель - сделать это django.contrib.search».

45
На странице теперь написано: «Этот проект больше не находится в активной разработке. Если вы ищете приложение для полнотекстового поиска django, которое работает с несколькими поисковыми системами, попробуйте Haystack».
Tomas Andrle

18

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

А пока вот что я нашел:

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


9

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


2
Solango говорит, что он больше не находится в разработке, и рекомендует использовать Haystack.
Рори

8

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

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


6

Спасибо, Гарт. Я видел, что djangosearch хотел стать официальным поисковым агентом Django, но я не решался использовать его, потому что не мог найти никакой документации! К счастью, в Subversion есть README , которого я раньше не видел, и он делает 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")

6

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

Я быстро нашел статью « Добавление поиска в Django» , и она отлично сработала для меня!

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


3

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


У меня есть пакет Django, который упрощает задачу: bitbucket.org/jaap3/django-bosssearch
jaap3

2

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

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


2

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


1

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


1

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

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

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


0

Спасибо, Джо,

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


0

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


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.