文档翻译一点一点(二)(lucene_tutorial)

[b]Lucene – IndexWriter[/b]
此类是索引过程中创建、更新索引的核心类,以下是org.apache.lucene.index.IndexWriter类的定义

public class IndexWriter
extends Object
implements Closeable, TwoPhaseCommit

[b]类属性:[/b]
[table]
|static int DEFAULT_MAX_BUFFERED_DELETE_TERMS|过期,用IndexWriterConfig.DEFAULT_MAX_BUFFERED_DELETE_TERMS替换
|static int DEFAULT_MAX_BUFFERED_DOCS|过期,用IndexWriterConfig.DEFAULT_MAX_BUFFERED_DOCS替换
|static int DEFAULT_MAX_FIELD_LENGTH|过期,查看 IndexWriterConfig.
|static double DEFAULT_RAM_BUFFER_SIZE_MB|用IndexWriterConfig.DEFAULT_RAM_BUFFER_SIZE_MB替换
|static int DEFAULT_TERM_INDEX_INTERVAL|过期,用IndexWriterConfig.DEFAULT_TERM_INDEX_INTERVAL 替换
|static int DISABLE_AUTO_FLUSH|过期用 static int DISABLE_AUTO_FLUSH替换
|static int MAX_TERM_LENGTH|term的绝对长度
|static String WRITE_LOCK_NAME|在索引中write-lock的名称
|static long WRITE_LOCK_TIMEOUT|过期,用Use IndexWriterConfig.WRITE_LOCK_TIMEOUT替换
[/table]
[b]构造函数:[/b]
//唯一一个没过期的构造函数,创建一个IndexWriter,参数在conf里面设置
IndexWriter(Directory d, IndexWriterConfig conf)
[b]方法:[/b]
[table]
|1|void addDocument(Document doc)|将document文档添加到索引
|2|void addDocument(Document doc, Analyzer analyzer)| 将document文档添加到索引,用analyzer替换函数本身的getAnalyzer()方法
|3|void addDocuments(Collection<Document> docs)| 添加一整块的document对象,id按顺序分配,外部的reader对docs只能全部可见或全部不可见。
|4|void addDocuments(Collection<Document> docs, Analyzer analyzer)| 添加一整块的document对象,id按顺序分配,外部的reader只能看到一整块或者都没有。分析器采用提供的analyzer分析器。
|5|void addIndexes(Directory... dirs)|将所有索引列表中的段增加到当前索引
|6|void addIndexes(IndexReader... readers)| 合并所有的索引到当前索引
|7|void close()| 提交所有改变到索引,并且关闭所有相关的文件
|8|void close(boolean waitForMerges)| 关闭索引,标识waitForMerges为是否等待当前合并完成后关闭。
|9|void commit()| 提交所有更改(增加、删除文档,段合并,增加索引等)到索引缓存,并写入文件,以便内存消失能够在文件里读取。
|10|void commit(Map<String,String> commitUserData)|提交所有更改索引,指定commitUserData映射(字符串 - >字符串)
|11|void deleteAll()|删除索引中的索引document对象(commit后索引文件才会变化,此时只是改变内存值)。
|12|void deleteDocuments(Query... queries)|根据任一Query条件删除document对象
|13|void deleteDocuments(Query query)| 根据Query条件删除document对象
|14|void deleteDocuments(Term... terms)| 根据任一的Trem删除docuemnt对象
|15|void deleteDocuments(Term term)| 根据Trem删除docuemnt对象
|16|void deleteUnusedFiles()| 删除任何不再使用的索引文件
|17|protected void doAfterFlush()| 在Directory已经删除或者增加document,但是还未提交时(新的段文件segments_N已经写入),会调用此钩子方法
|18|protected void doBeforeFlush()| 在Directory未删除或者增加document时,会调用此钩子方法
|19|protected void ensureOpen()|判断IndexWriter是否已经被关闭
|20|protected void ensureOpen(boolean includePendingClose)| 在内部使用,判断IndexWriter是否已经被关闭,如果已经关闭会抛出AlreadyClosedException异常
|21|protected void flush(boolean triggerMerge, boolean applyAllDeletes)| 同步所有内存中的变更(增加,删除)到Directory
|22|protected void flush(boolean triggerMerge, boolean flushDocStores, boolean flushDeletes)| 注:flushDocStores现在忽略(hardwired为true);这种方法在这里向后兼容
|23|void forceMerge(int maxNumSegments)| 强制合并<= maxNumSegments的所有段
|24|void forceMerge(int maxNumSegments, boolean doWait)| 同上,doWait=false,不会等待,但合并工作是在后台完成的。
|25|void forceMergeDeletes()|合并所有段中已经被删除的documents
|26|void forceMergeDeletes(boolean doWait)| 同上,doWait=false,不会等待,但合并工作是在后台完成的。
|27|Analyzer getAnalyzer()| 返回此索引所用的分析器
|28|IndexWriterConfig getConfig()| 返回一个私有的IndexWriterConfig,并复制一份传递到IndexWriter(Directory,IndexWriterConfig)中去。(要看下源码,为什么这样)
|29|static PrintStream getDefaultInfoStream()|从最近被实例化的IndexWriters中,返回默认的infoStream。
|30|Directory getDirectory()| 返回当前索引所使用的Directory
|31|PrintStream getInfoStream()|从当前正在使用的writer获取infoStream
|32|Collection<SegmentInfo> getMergingSegments()| 注:被 MergePolicy使用,获取已经合并的段。
|33|MergePolicy.OneMerge getNextMerge()|注:被MergeScheduler,取得下一个将要被MergePolicy中合并的段。
|34|PayloadProcessorProvider getPayloadProcessorProvider()| 返回一个PayloadProcessorProvider,提供跳转表合并使用
|35|boolean hasDeletions()|不知道用在哪,没写
|36|static boolean isLocked(Directory directory)| 当且仅当索引在指定的directory 目前被锁定,则返回true
|37|int maxDoc()|返回索引中文档的总数,包含还在缓存中(未flushed)的数据,不包含已经删除的。
|38|void maybeMerge()| 查看mergePolicy是否需要合并,如果有就一直合并直到没有为止
|39|void merge(MergePolicy.OneMerge merge)| 合并在栈中指定的段,变成一个段
|40|void message(String message)| 将信息打印到infoStream(信息输出流,console等), 线程调用前缀所指定的writer
|41|int numDeletedDocs(SegmentInfo info)|在reader池中获取删除的全部文档个数
|42|int numDocs()| 返回索引中文档的总数,包含还在缓存中(未flushed)的数据,包含已经删除的
|43|int numRamDocs()| 注:获取当前内存中全部的document个数
|44|void prepareCommit()|在commit之前将被调用
|45|void prepareCommit(Map<String,String> commitUserData)| 在commit之前将被调用,参数是存储将记录到段中的索引。
|46|long ramSizeInBytes()| 返回当前在内存中缓存的所有索引文件的总大小
|47|void rollback()| 关闭IndexWriter而不提交自上次发生的任何改变提交(或因为它被打开,如果提交没有被调用)
|48|String segString()|
|49|String segString(Iterable<SegmentInfo> infos)|
|50|String segString(SegmentInfo info)|
|51|static void setDefaultInfoStream(PrintStream infoStream)| 如果参数不为空,将会在IndexWriter中使用他(参数用作输出流,比如console)。
|52|void setInfoStream(PrintStream infoStream)| 在增、删、改、合并产生的maxFieldLength信息将在此打印
|53|void setPayloadProcessorProvider(PayloadProcessorProvider pcp)| 当使用到跳转表时将用到此 PayloadProcessorProvider
|54|static void unlock(Directory directory)| 在directory中根据name解锁
|55|void updateDocument(Term term, Document doc)| 根据term删除documents再增加一个document
|56|void updateDocument(Term term, Document doc, Analyzer analyzer)| 同上
|57|void updateDocuments(Term delTerm, Collection<Document> docs)| 先根据delTerm删除documents再增加一整块的docs(同时被外部reader可见或不可见);
|58|void updateDocuments(Term delTerm, Collection<Document> docs, Analyzer analyzer)| 其他同上,只是增加document使用参数提供的分词器
|59|boolean verbose()|是否启用verbosing,也就是有没有设置自己的输出(infoStream)
|60|void waitForMerges()| 等待当前未合并的合并完成
[/table]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值