Несколько вопросов о Solr. Транзакции и поиск в реальном времени - PullRequest
4 голосов
/ 16 февраля 2012

У меня есть приложение heldesk на PHP / MySQL.Я хочу реализовать в режиме реального времени полнотекстовый поиск, и я вошел в короткий список Solr.В базе данных MySQL будут храниться все данные, а данные, необходимые для поиска, будут импортированы для построения индекса Solr.Все поисковые запросы будут обрабатываться Solr.

То, что я хочу, это

  • Поиск в реальном времени.В тот момент, когда кто-то обновляет билет, он должен быть доступен для поиска.
  • Если несколько человек обновляют билет одновременно, Solr должен иметь возможность обрабатывать коммиты

Согласно моему пониманиюSolr, вот как я думаю, что система будет работать.Пользователь обновляет тикет -> соответствующие записи базы данных изменены -> на сервер Solr отправляется запрос на изменение соответствующего документа в индексе.

Я прочитал книгу о Solr, и следующие вопросы меня беспокоят.

  1. В книге упоминается, что коммиты

    "медленные в Solr. В зависимости от размера индекса, конфигурации автоподогрева Solr и состояния кэша Solr дофиксация, фиксация может занять нетривиальное количество времени. Как правило, это занимает несколько секунд, но в некоторых случаях это может занять несколько минут "

    Если это так, то какЯ знаю, когда данные будут доступны для поиска и как я могу реализовать поиск в реальном времени?Даже если это займет несколько секунд, это не может быть в режиме реального времени.Также я не хочу, чтобы операция обновления билета была замедлена (добавив дополнительный шаг обновления индекса Solr)

  2. Также упоминается, что

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

Это означает, что это из-за отсутствияТранзакционные коммиты, Solr может испортить, если несколько человек одновременно обновят тикет?

Теперь передо мной встает вопрос: могу ли я достичь двух с помощью Solr?Если да, то как?

Edit1: Да!Я пришел на пару похожих вопросов, но ни на один не получил удовлетворительного ответа.Так что постить снова.Извините, если найдете дубликат.

1 Ответ

4 голосов
/ 16 февраля 2012

Запрашиваемая вами функция известна как поиск в реальном времени, также называемый NRT. Работа над NRT все еще продолжается, но за последние пару лет эта поддержка в Solr была значительно улучшена. Пожалуйста, обратитесь к следующим ссылкам для получения более подробной информации о текущей (версии 1.4 - 3.5) и будущей (версия 4.0) поддержке NRT.

Параметры NRT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...