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 MB, докато индексът на MySQL FULLTEXT на същите данни беше само 466 MB.
Използване на 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 като език е повишаване на ефективността на разработка, а не ефективността по време на изпълнение.
актуализация: Току-що се опитах да създам индекс с помощта на Zend_Search_Lucene
. Създаването на индекс е много по-бавно с PHP, отколкото с технологията Java Lucene, така че индексирах само 10 000 документа. Това отне почти 15 минути, което ще отнеме около 36 часа индексирането на цялата колекция. Сравнете това с Java Lucene, която в моя тест индексира пълната колекция от 1,5 милиона документа за по-малко от 7 минути.
Размерът на индекса, който създадох с Zend_Search_Lucene
е 8,75 MB. Екстраполирайки това 150x, смятам, че пълният индекс ще бъде 1312,5 MB. Така че заключавам, че Zend_Search_Lucene
създава индекс с приблизително същия размер като индекса, произведен от Java Lucene. Това е според очакванията.