Lucene深入学习(5)Lucene的IndexWriter

来源:互联网 发布:淘宝怎么搜索旺旺号 编辑:程序博客网 时间:2024/06/05 05:28

摘要: Lucene的索引器IndexWriter主要是创建索引,合并索引,控制索引的创建过程。本次代码示例基于Lucene 6.2.1.

获得IndexWriter

想要获得IndexWriter实例,需要用到唯一的构造器:

public IndexWriter(Directory d, IndexWriterConfig conf)

第一个参数指定了索引地址,第二个参数就是索引的配置信息了。Lucene使用IndexWriterConfig封装了所有索引时需要的设置的内容,它含有的丰富的内容,定义了许多默认值。

可以通过下面的方式拿到索引时的配置信息:

            Directory directory = FSDirectory.open(Paths.get("d://myindex"));            IndexWriterConfig config = new IndexWriterConfig();            writer = new IndexWriter(directory, config);            System.out.println(writer.getConfig());

我的Lucene默认的配置信息如下:

analyzer=org.apache.lucene.analysis.standard.StandardAnalyzerramBufferSizeMB=16.0maxBufferedDocs=-1maxBufferedDeleteTerms=-1mergedSegmentWarmer=nulldelPolicy=org.apache.lucene.index.KeepOnlyLastCommitDeletionPolicycommit=nullopenMode=CREATE_OR_APPENDsimilarity=org.apache.lucene.search.similarities.BM25SimilaritymergeScheduler=ConcurrentMergeScheduler: maxThreadCount=-1, maxMergeCount=-1, ioThrottle=truecodec=Lucene62infoStream=org.apache.lucene.util.InfoStream$NoOutputmergePolicy=[TieredMergePolicy: maxMergeAtOnce=10, maxMergeAtOnceExplicit=30, maxMergedSegmentMB=5120.0, floorSegmentMB=2.0, forceMergeDeletesPctAllowed=10.0, segmentsPerTier=10.0, maxCFSSegmentSizeMB=8.796093022207999E12, noCFSRatio=0.1indexerThreadPool=org.apache.lucene.index.DocumentsWriterPerThreadPool@1fbc7afbreaderPooling=falseperThreadHardLimitMB=1945useCompoundFile=truecommitOnClose=trueindexSort=nullwriter=org.apache.lucene.index.IndexWriter@45c8e616

添加索引文档

IndexWriter()准备好后,就可以添加文档Document了。IndexWriter使用到了下面两个简单的添加接口:

public long addDocument(Iterable<? extends IndexableField> doc)public long addDocuments(Iterable<? extends Iterable<? extends IndexableField>> docs)

乍一看,它们没有区别。实际上,第一个适合添加单个文档,下面的添加多个文档。

阅读全文
0 0
原创粉丝点击