2012-04-30 2 views
0

Я создаю веб-приложение с php и mysql. Веб-приложение будет иметь 3-4 большие таблицы (миллионы записей на таблицу), где крайне важно, чтобы было возможно выполнить полный текстовый поиск на нем для поиска термина в текстовом поле. Я проектирую это веб-приложение с помощью mysql, потому что ему нужна полная поддержка и транзакция. Теперь я пытаюсь понять, как быстрее выполнить запрос для результата поиска в этих 3-4 больших таблицах данных с помощью терминов (несколько слов).подход интегрировать solr и mysql

Я рассматриваю Solr для хранения старых данных, я думаю, что я могу построить периодически хрон, что импорт данных из MySQL в Solr, но, но я не понимаю:

  • как я могу запросить свежие результат с mysql, если пользователь ищет текст, который только что вставил несколько секунд назад, вместо этого пользователь ищет старую текстовую вставку, например, 2 дня назад?

и если пользователь изменить старые данные:

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

также

  • если пользователь обновления старых данных правильно на MySQL (в транзакции) и сразу же обновления попытаться затем приложение также данные в Solr для обновления со значением новых данных, но не работает , пользователь уже мог видеть старые данные, а не новые данные, потому что solr имеет уже старые данные, потому что обновление не работает.

ответ

0

Solr имеет XML interface для подачи документов для индексации. Каждый раз, когда обновляемые данные в вашем приложении обновляются, вы можете отправить запрос на добавление/обновление в solr, который затем «мгновенно» индексирует эти данные.

+0

ok, но если мое приложение делает другое обновление внутри транзакции и фиксирует его, а затем отправляет запрос в solr для индекса обновления, но запрос на запрос solr не работает, я получаю, что на mysql все нормально, вместо этого в solr index isnt 'updated , Затем пользователь выполняет поиск, и он обнаруживает, что запись не имеет обновления, потому что запрос на вызов solr. Поэтому мне нужно, чтобы все обновления выполнялись mysql, и запрос выполнялся в solr в одну транзакцию. Поэтому я что-то не получаю, я получаю данные untouch, как в mysql, как в solr. Является ли это возможным? – paganotti

+0

Если я правильно вас понимаю, вам нужна 100% -ная согласованность между MySQL и вашим экземпляром Solr. Solr имеет java-клиент, [SolrJ] (http://wiki.apache.org/solr/Solrj); вы можете выполнить свою транзакцию mysql и обновление Solr внутри одной транзакции, отбросив фиксацию на MySQL, если обновление solr завершится с ошибкой. – beerbajay

+0

ОК, спасибо. Возможно ли также использовать php-драйвер для solr для получения даже 100% -ной согласованности между mysql и solr? Если у меня большие данные, индекс обновления на solr занимает больше времени? потому что вы говорите «мгновенно», поэтому кажется, что требуется время для создания индекса для изменения документа, а пользователь, который делает обновление в этот момент, не может ждать долгого запроса. – paganotti

Смежные вопросы