Який найкращий додаток для пошуку Джанго? [зачинено]


110

Я будую проект Django, який потребує функцій пошуку, і поки не з’явиться django.contrib.search, я повинен вибрати додаток пошуку. Отже, що найкраще? Під "найкращим" я маю на увазі ...

  • простий в установці / налаштуванні
  • має придатний для Django або принаймні Python API
  • може здійснювати досить складні пошуки

Ось кілька програм, про які я чув, будь ласка, підкажіть іншим, якщо ви знаєте про будь-яке:

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



Зазвичай такі речі, як "найкраще", є досить суб'єктивними, але в django дійсно є один "найкращий" додаток пошуку, як показує прийнята відповідь.

Якщо я повністю не розумію джанго, це все-таки запит бібліотеки і, таким чином, поза темою.
Джефрі Босбум

Відповіді:


104

Ознайомтеся з пошуком Haystack Search - новим модельним шаром абстракції пошуку, який на даний момент підтримує Xapian , Solr та Whoosh . Схоже, це добре підтримується і документується.


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

2
Від проекту djangosearch: "Цей проект вже не перебуває в активному розвитку. Якщо ви шукаєте повний текст для пошуку в django, який працює з декількома пошуковими системами, ознайомтеся зі стогом сіна. Якщо ви шукаєте щось конкретно для Solr, ви можете хочу спробувати соланго ".
Естебан Фельдман

Стог сена погано, якщо він взагалі підтримується досить тривалий час. Я рекомендую вам уникати цього на даний момент. Можливо, вони це виправлять у майбутньому, але зараз у поганому місці.
Аарон Шиф

Я згоден, остання версія сіна (2.1) взагалі не працює з моєю версією django 1.4 на python 2.7.
Кріс Хоукс

19

Джастін, я спробував би спершу дослідити джанго : Джейкоб Каплан-Мосс (головний розробник Django) працює над цим.

Потенційні небезпеки:

  • Домашня сторінка попереджає, що API може бути не повністю стабільним

Потенційні переваги:

  • "Довгострокова мета полягає в тому, щоб це стало django.contrib.search".

45
Зараз на цій сторінці написано: "Цей проект вже не перебуває в активному розвитку. Якщо ви шукаєте програму повнотекстового пошуку django, яка працює з декількома пошуковими системами, ознайомтеся з Haystack."
Томаш Андрле

18

Я шукаю те саме, що і багато інших людей. Будемо сподіватися, що скоро буде додано django.contrib.search .

Тим часом я це знайшов:

Для мене більшість виглядає досить складно і, чесно кажучи, трохи непросто реалізувати. Мені було б цікаво дізнатися, що ви думаєте про них.



8

Я б рекомендував Sphinx для повнотекстового пошуку та агрегації, а django-сфінкс досить хороший для використання у виробництві. Ми з’ясували, що Сфінкс був найменш ресурсомістким і найшвидшим способом індексувати та шукати наші документи, і що джанго-сфінкс був гарною обгорткою на вершині клієнта-сфінкса.

Група за агрегуванням особливо приємна, якщо, наприклад, ви хочете показати, скільки документів із певним тегом або певним автором (або обома) відповідали пошуку. У пам’яті також були зручні оновлення атрибутів, особливо для негайного видалення видалених статей.


6

Спасибі Гарт. Я бачив, що djangosearch хотів стати офіційним пошуком Джанго, але я вагався використовувати його, тому що я не міг знайти жодної документації! На щастя, у підривці є 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

Мені просто потрібно було дуже швидке рішення, яке не суперечило внутрішнє додаток.

Я знайшов статтю Додавання пошуку в Джанго в найкоротші терміни , і це спрацювало чудово для мене!

Очевидно, йому не вистачає швидкості, масштабованості та особливостей таких реальних проектів, як Haystack, але цей простіший у створенні, і мені не потрібно нічого іншого, крім пошуку за ключовими словами AND.


3

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


У мене є пакет Django, який робить це ще простіше: bitbucket.org/jaap3/django-bosssearch
jaap3

2

Схоже, всі тут пропустили джанго-ксаппі

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



1

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


1

Я думаю, що мені доведеться кричати Джапіану.

Це твердотіла порода ... просто потягніть на джерело розповсюдження та загляньте всередину. Топ найвищого коду, не дуже багато коментарів тхо ..

Це все-таки молодий проект програмного забезпечення, але я думаю, що спільнота джанго повинна кинути свою вагу за цим.


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.