Форматы файлов индекса Zend_Search_Lucene являются совместимыми с Lucene версии 1.4 и выше.
Подробное описание этого формата можно прочитать здесь: http://lucene.apache.org/java/docs/fileformats.html.
После создания индекса директория для индекса будет содержать несколько файлов:
файл segments
является списком сегментов индекса.
файлы *.cfs
содержат сегменты индекса.
Внимание! Оптимизированный индекс всегда имеет только один сегмент.
файл deletable
является списком файлов,
которые больше не используются индексом, но которые нельзя было удалить.
Приведенный ниже листинг программы на Java представляет собой пример того, как индексировать файл, используя Java Lucene:
/** * Создание индекса: */ import org.apache.lucene.index.IndexWriter; import org.apache.lucene.document.*; import java.io.* ... IndexWriter indexWriter = new IndexWriter("/data/my_index", new SimpleAnalyzer(), true); ... String filename = "/path/to/file-to-index.txt" File f = new File(filename); Document doc = new Document(); doc.add(Field.Text("path", filename)); doc.add(Field.Keyword("modified",DateField.timeToString(f.lastModified()))); doc.add(Field.Text("author", "unknown")); FileInputStream is = new FileInputStream(f); Reader reader = new BufferedReader(new InputStreamReader(is)); doc.add(Field.Text("contents", reader)); indexWriter.addDocument(doc);
Для того, чтобы можно было сразу начать работать с Zend_Search_Lucene, файл JAR (JAVA) уже создан с тем, чтобы можно было генерировать индекс из командной строки. За более подробной информацией о файлах JAR, см. http://java.sun.com/docs/books/tutorial/jar/basics/index.html.
LuceneIndexCreation.jar принимает текстовые файлы и создает из них индекс. Использование:
java -jar LuceneIndexCreation.jar [-c] [-s] <document_dir> <index_dir> -c - force index to be case sensitive -s - store content in the index
Эта команда принимает директорию <document_dir>
,
включая все ее вложенные директории, и создает индекс Lucene.
Индекс является набором файлов, которые будут сохранены в отдельной
директории, которая задается через <index_dir>
.
Для каждого индексируемого документа LuceneIndexCreation создает объект документа с тремя полями: поле contents, содержащее тело документа, поле modified, содержащее время изменения файла, и полный путь с именем файла в поле path.
Если указана опция -c
, то индекс становится чувствительным
к регистру. Иначе перед добавлением в индекс все элементы
приводятся к нижнему регистру.
Если указана опция -s
, то содержимое документа
тоже сохраняется в индексе и сожет быть получено с помощью
полей path
и modified
.
Иначе сохраняются только поля path
и modified
,
поле contents
только индексируется. В этом случае
содержимое документа должно быть получено из источника
через его путь.
Будьте осторожны — применение опции -s
увеличивает объем индекса примерно в пять раз.