`
nj_link
  • 浏览: 10309 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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

阅读更多
Lucene – IndexWriter
此类是索引过程中创建、更新索引的核心类,以下是org.apache.lucene.index.IndexWriter类的定义
public class IndexWriter
   extends Object
      implements Closeable, TwoPhaseCommit

类属性:
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_LENGTHterm的绝对长度
static String WRITE_LOCK_NAME在索引中write-lock的名称
static long WRITE_LOCK_TIMEOUT过期,用Use IndexWriterConfig.WRITE_LOCK_TIMEOUT替换

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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics