Поисковое решение для Django, которое на самом деле работает?

Я просто написал эту вспомогательную функцию. Поместите его в App_Code/JS.cshtml:

@using System.Web.Script.Serialization
@helper Encode(object obj)
{
    @(new HtmlString(new JavaScriptSerializer().Serialize(obj)));
}

Тогда в вашем примере вы можете сделать что-то вроде этого:

var title = @JS.Encode(Model.Title);

Обратите внимание, как я не помещаю кавычки вокруг него. Если заголовок уже содержит кавычки, он не будет взорваться. Кажется, тоже прекрасно справляются со словарями и анонимными объектами!

30
задан nikola 8 March 2010 в 01:39
поделиться

7 ответов

Краткий ответ: Нет.

Мы отказались и использовали Систему пользовательского поиска Google. Хотя сайт имеет более 10 000 возможных просмотров страниц, мы сохраняем подачу карты сайта до основных 4 000 страниц или около того, и это стоит 250 долларов в год, что составляет примерно 2 часа моего времени. Заказчик доволен и доволен результатами.

Я бы хотел, чтобы кто-нибудь предложил хорошее решение FOSS, но в коммерческой ситуации TCO должна иметь экономический смысл.

7
ответ дан 28 November 2019 в 00:16
поделиться

Вы рассматривали Сфинкса ? Что вы используете в качестве хранилища данных? У него есть движок MySQL, который отлично работает. Я думаю, что он соответствует большинству ваших требований, за исключением того, что я не совсем уверен, насколько хорошо его можно связать с Django-ORM.

Я серьезно подумываю об использовании Sphinx в одном из моих собственных приложений Django для повышения производительности в поле автоматического предложения, которое выполняет поиск по префиксу и инфиксу в корпусе из 3,5 миллионов записей. Но у меня еще нет времени на его реализацию, поэтому я не могу говорить об интеграции Django + Sphinx. Мой единственный опыт работы со Sphinx связан с MySQL Engine и прямым запросом MySQL.

1
ответ дан 28 November 2019 в 00:16
поделиться

Я (и мои коллеги) успешно использовали Haystack для достижения довольно хорошей функциональности поиска.

Легко начать с haystack и бэкенда whoosh; и перейти на бэкенд Apache-Solr, когда производительность whoosh становится неприемлемой.

Нам действительно пора написать об этом подробный пост со ссылками на проекты, где это работает.

Пока же я могу предложить вам взглянуть на этот поиск: http://www.webdevjobshq.com/search/?q=rails, реализованный с использованием Haystack с бэкендом Apache-Solr. Или вот это: http://www.govbuddy.com/search/?q=Roy

1
ответ дан 28 November 2019 в 00:16
поделиться

Я использую Djapian. Его было довольно просто установить, и он отлично работает. Есть фактический учебник, который охватывает основные случаи использования и показывает весь процесс интеграции.

Да, в нем есть некоторые неясности, но трекер проблем открыт, и авторы быстро исправляют ошибки и добавляют функции.

0
ответ дан 28 November 2019 в 00:16
поделиться

Я также разработал несколько приложений Django с поддержкой xapian. У самого большого из них есть база данных xapian с индексом 8G, в которой хранится 2,4 миллиона документов (включая сообщения на форумах, вики-статьи, записи о планетах и ​​записи в блогах) - все еще растет.

В целом я вполне доволен xapian. Он работает очень хорошо и прост в использовании. Единственное, что мне не нравится, это то, что xapian не будет работать с mod_wsgi (кроме глобального режима) из-за тупика. Таким образом, вы вынуждены использовать fastcgi (или подключиться к xapian-tcpsrv, или написать свой собственный сервис).

Я рекомендую вам использовать привязки xapian напрямую. В настоящее время Xapian предлагает довольно много полезных помощников (TermGenerator, QueryParser и т. Д.), Которые упрощают как индексацию, так и запросы. Фактически, я не могу представить себе ничего, что оправдало бы дополнительную библиотеку. На мой взгляд, все они более сложные и не позволяют эффективно индексировать.

Единственное, что вам нужно, это некоторое понимание того, как работает xapian. (Что такое термины? Что такое ценности? Что такое корчевание и где его использовать? И т. Д.). Вы можете найти все эти темы на веб-сайте xapian, и как только вы поймете эти концепции, работать с xapian станет легко.

Кроме того, xapian API чрезвычайно стабилен. Я начал использовать его задолго до выпуска 1.0, и у меня никогда не было проблем с изменениями API или конфликтами версий. Единственное, что изменилось, это то, что все те помощники (парсер запросов, токенизатор и т. Д.), Которые я когда-то написал для моего проекта Django, теперь бесполезны, потому что аналогичные классы проникли в ядро ​​xapian.

Итак, чтобы подвести итог, просто попробуйте прямое использование привязок xapian.

11
ответ дан 28 November 2019 в 00:16
поделиться

Детали, которые вы запрашивали.

  • точный дистрибутив Linux, версия выпуска - Ubuntu 9.04 и 9.10
  • точная версия выпуска Haystack (или эквивалент) - Haystack 1.0, а также основная
  • версия серверной части поиска - бэкэнды Solr & Whoosh включены в Haystack
  • точная версия релиза поисковой системы - Solr 1.3, Solr 1.4 & Whoosh 0.3.15
  • общедоступная (!) Документация, как настроить все компоненты точно так, как была настроена ваша установка, чтобы минимальный требования, указанные выше, выполнены.

Помимо этого, это стандартные биты конфигурации из учебника, а также любые дополнительные переопределения из (на которые я не могу ссылаться, спасибо Stack Overflow) по мере необходимости.

Как сопровождающий Haystack, я активно использую все вышеперечисленные предыдущие установки. Самая маленькая установка Haystack (Haystack 1.0 + Whoosh) составляет ~ 600 документов. Немного побольше (Haystack master + Solr 1.4) - ~ 4000 документов. Самое крупное развертывание, о котором я знаю (Haystack master + Solr 1.4), составляет ~ 3 миллиона документов.

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

7
ответ дан 28 November 2019 в 00:16
поделиться

Я могу поручиться за Django-Haystack с бэкэндом Xapian (в интересах полного раскрытия информации я являюсь автором бэкэнда xapian-haystack) в реальной производственной среде. В настоящее время мы используем Haystack / Xapian на нескольких сайтах, самый крупный из которых имеет более 20 000 зарегистрированных пользователей и базу данных Xapian с более чем 20 000 документов, содержащих более 143 000 уникальных терминов, общим размером ~ 141 МБ.

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

Дэниел и я делаем все возможное, чтобы своевременно реагировать на любые проблемы, возникающие на Github. Кроме того, мы оба обычно доступны на IRC-канале #haystack в течение дня и в группе Google django-haystack.

Используемые версии:

  • Haystack 1.0BETA с Xapian-Haystack 1.1.0BETA
  • Haystack 1.0.1FINAL с Xapian-Haystack 1.1.3BETA

Большинство сайтов, которые мы развернули с Haystack, работали под управлением Ubuntu 8.04 LTS с Xapian 1.0.5

9
ответ дан 28 November 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: