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


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.