Zend_Search_Lucene, как открыть общий доступ к папке хранения индекса по сети - PullRequest
1 голос
/ 23 августа 2010

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

Теперь я сталкиваюсь с проблемой индексации, когда пользователь заходит на сайт через сервер № 1 и хранит информацию, Zend_Search_Lucene хранит только сервер № 1 индекса.

Таким образом, как только другой пользователь заходит на сайт через сервер № 2 и выполняет поиск, восстанавливаются только индексы на сервере № 2.

Есть ли какой-нибудь способ предоставить общий доступ к папке хранилища индексов для доступа к обоим серверам? Или есть ли способ хранить индексы в базе данных mysql, а не в файловой системе?

1 Ответ

2 голосов
/ 23 августа 2010

хорошо, пожалуйста, не делайте мне больно, потому что я не дам вам точного ответа на ваш вопрос, но дам вам альтернативу.

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

lucene действительно поддерживает разделение (распределение индексов по нескольким серверам и объединение результатов по отдельности)

также поддерживает репликацию, которая будетлучше идти за вами

, так что вот вам действительно полезная часть:

проверьте solr на http://lucene.apache.org/solr/, все его настройки с примером установки с включенной пристанью.вам не нужно ничего делать, кроме как настраивать свои поля, если вы не используете подстановочные поля и запускаете его, используя java -jar start.jar

, когда сервер работает на порте по умолчанию, который я просто забыл, у вас естьИнтерфейс, на который вы можете отправить свои новые документы, используя http пост.Вы можете сделать это из php с каждого из ваших серверов приложений.Затем solr проиндексирует его и зафиксирует изменения, если вы включите флаг фиксации.

вы можете запросить свой индекс, используя интерфейс http и параметры запроса solr.тогда вы получите аккуратный документ формата JSON или XML.Вы можете реплицировать свой сервер, если у вас возникнут какие-либо проблемы с загрузкой.

, но ваш сервер будет обрабатывать в 1000 раз больше запросов, чем если бы вы делали это с помощью Zend, потому что все работает, Lucene загружен и запросы могут быть обработаны.прямо сейчас.

просто ознакомьтесь с этим пошаговым руководством, и все будет в порядке: http://lucene.apache.org/solr/tutorial.html

, если вам все это не нравится и вы все равно хотите придерживаться Zend:

база данных невозможна, но вы можете написать обертку.однако это было бы абсурдно.Лучше всего в этом случае настроить сетевую файловую систему!

любые вопросы, я знаю.

ps: когда вы сталкиваетесь с выбором, рекомендуется использовать dismax, вв большинстве случаев это намного быстрее.

...