Именно так я и обработал поиск huddler.com . Я использовал несколько индексов Zend_Search_Lucene, по одному на тип данных. Для опции «все» у меня просто был другой индекс, который включал все из всех индексов - поэтому, когда я добавил документы в индекс, я добавил их дважды, один раз в соответствующий индекс «типа» и один раз в «все». " индекс. Zend Lucene сильно недооценен по сравнению с другими реализациями Lucene, поэтому это было лучшее решение, которое я нашел. Вы обнаружите, что порт Zend поддерживает только подмножество синтаксиса запросов lucene, и плохо - даже для умеренных индексов (10–100 МБ), запросы, такие как «a *», или фразы в кавычках не работают должным образом (если на все).
Когда мы принесли большой сайт на нашу платформу, мы обнаружили, что Zend Lucene не масштабируется. Наш индекс достиг примерно 1,0 ГБ, а простые запросы занимали до 15 секунд. Некоторые запросы заняли минуту или больше. И создание индекса с нуля заняло около 20 часов.
Я перешел на Solr; Solr не только работает в 50 раз быстрее во время индексации и в 1000 раз быстрее для многих запросов (большинство запросов заканчиваются менее чем за 5 мс, все заканчиваются менее чем за 100 мс), это намного более мощно. Кроме того, мы смогли перестроить наш индекс более 100 000 документов с нуля за 30 минут (вместо 20 часов).
Теперь все в одном индексе Solr с полем типа; Я выполняю несколько запросов к индексу для каждого поиска, каждый с различным фильтром «type:» и один без «type:» для опции «all».
Если вы планируете увеличить свой индекс до 100+ МБ, вы получаете по крайней мере несколько поисковых запросов в минуту или хотите предложить какие-либо расширенные функции поиска, я настоятельно рекомендую отказаться от Zend_Search_Lucene.