ИндексацияСоздание нового индексаВозможности по созданию и обновлению индекса реализованы в модуле Zend_Search_Lucene и Java Lucene. Вы можете использовать обе эти возможности. Приведенный ниже листинг кода PHP дает пример того, как индексировать файл, используя программный интерфейс Zend_Search_Lucene для индексирования.
Только что добавленные документы можно сразу извлекать из индекса. Обновление индексаТа же самая процедура используется при обновлении существующего индекса. Единственное отличие состоит в том, что вместо метода create() вызывается метод open():
Обновление документовФормат файлов индекса Lucene не поддерживает обновление документов. Для обновления документ должен быть удален и добавлен снова.
Метод
Получение размера индексаВ Zend_Search_Lucene есть два способа получения размера индекса.
Метод
Метод
При оптимизации индекса производится очищение индекса от удаленных документов и сжатие диапазона используемых идентификаторов. Поэтому внутренний идентификатор документа может изменяться Оптимизация индексаИндекс Lucene состоит из сегментов. Каждый сегмент является независимой порцией данных.
Файлы сегментов индекса Lucene по своей природе не могут обновляться.
Обновление сегмента требует его полной реорганизации.
За подробностями см. форматы файлов индекса
( Увеличение числа сегментов ухудшает качество индекса, но оптимизация индекса восстанавливает его. Оптимизация сводится к объединению нескольких сегментов в один. Этот процедура также не обновляет сегменты. Она создает новый большой сегмент, который содержит новый оптимизированный сегмент вместо набора старых сегментов и обновляет список сегментов (файл 'segments').
Полная оптимизация индекса может производиться через вызов метода
Автоматическая оптимизация индекса выполняется для поддержания индекса в согласованном состоянии. Автоматическая оптимизация является итеративным процессом, управление которым производится посредством нескольких опций. В процессе этой оптимизации очень маленькие сегменты объединяются в сегменты большего размера, затем эти сегменты объединяются в еще большие и т.д. Опция автоматической оптимизации MaxBufferedDocsMaxBufferedDocs является наименьшим количеством документов, необходимым для того, чтобы документы из памяти были переписаны в новый сегмент. MaxBufferedDocs может быть получен или установлен через методы $index->getMaxBufferedDocs() и $index->setMaxBufferedDocs($maxBufferedDocs) соответственно. Значение опции по умолчанию равно 10. Опция автоматической оптимизации MaxMergeDocsMaxMergeDocs является наибольшим количеством документов при достижении которого они всегда объединяются методом addDocument(). Меньшие значения (т.е. меньше, чем 10.000) являются наилучшими для интерактивной индексации, так как ограничивает продолжительность пауз в течение индексации до нескольких секунд. Большие значения являются наилучшими для пакетной индексации и более быстрого поиска. MaxMergeDocs может быть получен или установлен через методы $index->getMaxMergeDocs() и $index->setMaxMergeDocs($maxMergeDocs) соответственно. Значение опции по умолчанию равно PHP_INT_MAX. Опция автоматической оптимизации MergeFactorMergeFactor определяет, как часто сегменты индекса объединяются с помощью addDocument(). Чем менше значение, тем меньше и объем оперативной памяти, используемой в процессе индексации, и поиск по неоптимизированному индексу производится быстрее, но скорость индексации снижается. Чем больше значение, тем больше и объем используемой оперативной памяти, и индексация производится быстрее, в то время как поиск по неоптимизированному индексу производится медленнее. Таким образом, большие значения (> 10) являются наилучшими в случае пакетной индексации, а меньшие (< 10) — для индексов, которые поддерживаются интерактивно. MergeFactor является хорошим средством оценки среднего количества сегментов, объединяемых в одном прохождении автоматической оптимизации. Слишком большие значения приводят к созданию большого количества сегментов то того, как они объединятся в один новый. Это может вызвать сообщение об ошибке "failed to open stream: Too many open files". Данное ограничение зависит от операционной системы. MergeFactor может быть получен или установлен через методы $index->getMergeFactor() и $index->setMergeFactor($mergeFactor) соответственно. Значение опции по умолчанию равно 10.
Lucene Java и Luke (Lucene Index Toolbox -
ОграниченияОграничения зависят от платформы. Для 32-битной платформы максимальный размер индекса составляет 2Гб.
|
|