Могу ли я предсказать, насколько большой будет мой индекс Zend Framework? (и некоторые быстрые Q: s)

У меня около 100thousand строк в таблице mysql, где each row has about 8 fields.

Я, наконец, понял, как использовать Zend Lucene для индексирования и поиска данных из таблицы mysql.

Прежде чем полностью реализовать эту функциональность на своем веб-сайте, у меня есть несколько вопросов:

1- Можно ли заранее определить размер индекса? Это потому, что в руководстве Zend указано, что максимальный размер индекса составляет 2 ГБ. Я сразу думаю, что этого недостаточно для моего стола!

2- Я читал сообщения, где они говорят, что поиск по Zend Lucene очень медленный на больших индексах, до минут! Быстрее ли использовать команды mysql напрямую (SELECT, LIKE и т. Д.) Вместо zend?

3- Есть ли какие-либо другие решения для моей проблемы, связанные с созданием поисковой системы для объявлений, которые имеют эти функции, по крайней мере, и не требуют полнотекстовых индексов mysql (полей).

благодаря

Solutions Collecting From Web of "Могу ли я предсказать, насколько большой будет мой индекс Zend Framework? (и некоторые быстрые Q: s)"

SOLR – это в основном контейнер Apache Tomcat, который реализует интерфейс REST для запроса индекса Apache Lucene. Да, вы должны иметь возможность запускать приложение Java на своем веб-сервере. Это проблема для вас, чтобы работать с вашим хостинг-провайдером.

Клиентам, использующим ваше веб-приложение, не нужно запускать Java. Ваше приложение PHP может сделать запрос REST службе SOLR и отформатировать результаты в формате HTML. Клиент видит только вывод HTML; он никогда не должен знать, что данные поступают из службы, реализованной на Java.

Zend_Search_Lucene – это реализация с чистым PHP, которая должна работать одинаково с Apache Lucene. Решение Zend даже использует идентичный формат индексного файла. Поэтому они должны быть одинаковыми.

Я использовал Java Lucene для индексирования дампа данных StackOverflow (октябрь 2009 г.). Я проиндексировал 1,5 миллиона строк, в том числе около 1 гига текста. Индекс Lucene составлял 1323 МБ, тогда как индекс MySQL FULLTEXT с теми же данными составлял всего 466 МБ.

Использование предикатов SQL LIKE вместо любого полнотекстового индексационного решения не требует свободного места, поскольку в любом случае он не может использовать обычный индекс. Но в моих тестах с использованием LIKE было примерно в 200 раз медленнее, чем Java Lucene, что в свою очередь было на 40% медленнее, чем индекс MySQL FULLTEXT на одни и те же данные.

См. Мою недавнюю презентацию о полнотекстовых индексах с MySQL:

http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

Неудивительно, что он не может сравниться с производительностью и масштабируемостью технологии Java Lucene. Преимущество PHP как языка повышает эффективность разработки, а не эффективность работы.


update: Я просто попытался создать индекс, используя Zend_Search_Lucene . Создание индекса намного медленнее с PHP, чем с технологией Java Lucene, поэтому я только проиндексировал 10 000 документов. Это заняло почти 15 минут, что потребовало бы около 36 часов для индексации всей коллекции. Сравните это с Java Lucene, который в моем тесте проиндексировал полную коллекцию из 1,5 миллионов документов менее чем за 7 минут.

Размер индекса, созданного с помощью Zend_Search_Lucene составляет 8,75 МБ. Экстраполируя этот 150x, я считаю, что полный индекс будет 1312,5 МБ. Поэтому я пришел к выводу, что Zend_Search_Lucene создает индекс примерно того же размера, что и индекс, созданный Java Lucene. Это так, как ожидалось.