Лучший способ выполнить онлайн-индексацию таблиц для поиска на основе Zend_Search_Lucene - PullRequest
3 голосов
/ 10 августа 2010

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

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

На что мне обратить внимание, чтобы реализовать это?

Спасибо за любую помощь, которую вы можете оказать.

1 Ответ

1 голос
/ 11 августа 2010

Нет необходимости индексировать отдельно от развертывания. Здесь я предлагаю решение.

Создайте каталог по умолчанию в вашем приложении, скажем searchdata. Внутри этого создайте отдельные пути к различным типам данных (скажем, для городов, папка с именем city_index). Внутри файла конфигурации (вашего приложения) укажите эти пути. Напишите сценарии php, чтобы он считывал данные таблицы и составлял индекс. Эти сценарии используют пути конфигурации для создания индекса. Напишите мастер-скрипт, который запустит все эти скрипты.

На вашем сервере запустите эти скрипты один раз. Этот поиск будет продолжен (используйте пути конфигурации для поиска). (Нет индексации при первом поиске)

Если был добавлен новый город, то в вашем коде, в который вы добавляете этот город (функция модели) с обновлением db, обновите и индекс. Также оптимизируйте индексный файл, который уменьшит время поиска. Эта операция не частая, поэтому обновление на лету не проблема.

...