Zend_Search_Lucene 的索引文件格式和 1.4 或更高版本的 Lucene 二进制兼容。
关于文件格式的更详细的描述在这里: http://lucene.apache.org/java/docs/fileformats.html。
在创建了索引之后,索引目录中将包含下列文件:
segments
文件是一个索引分段的清单。
*.cfs
文件包含索引分段。请注意!优化了的索引总是只有一个分段。
deletable
文件是一个不再被索引使用但是无法删除的文件清单。
下面的 Java 程序提供了一个如何使用 Java Lucene 索引文件的例子:
/** * Index creation: */ 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,人们创建了一个基于 Java 的 JAR 文件用以通过命令行生成索引。要了解 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
选项会让索引的大小扩大近五倍。