org.apache.lucene.store.Directory數據庫
指定索引所在目錄。apache
org.apache.lucene.store.RAMDirectory緩存
存放於內存中的目錄。函數
org.apache.lucene.store.RAMDirectory.RAMDirectory(FSDirectory dir, IOContext context)
構造函數。把文件索引載入內存中。this
org.apache.lucene.store.FSDirectoryspa
抽象類,表明磁盤中的目錄。有三個實現類:MMapDirectory、NIOFSDirectory與SimpleFSDirectory。orm
org.apache.lucene.document.Document對象
文檔是索引存儲與搜索的基本單位。排序
org.apache.lucene.document.Document.Document()繼承
默認構造函數。
void org.apache.lucene.document.Document.add(IndexableField field)
向文檔中添加一個字段。
String org.apache.lucene.document.Document.get(String name)
根據field name拿內容。若不存在返回null。
String org.apache.lucene.document.Document.toString()
內容格式爲:Document<字段1信息 字段2信息 ... 字段n信息>。
一個例子爲:Document<stored,indexed,tokenized,omitNorms,indexOptions=DOCS<id:4> stored,indexed,tokenized<content:try everything>>
org.apache.lucene.document.Field
基類。通常會使用它的多個子類。
org.apache.lucene.document.Field.Store
Field類的內部枚舉類。有enum{YES,NO}兩個值。
org.apache.lucene.document.FieldType
描述一個Field的配置信息,包括是否分詞、是否存儲等。
org.apache.lucene.document.FieldType.FieldType()
默認構造函數。
void org.apache.lucene.document.FieldType.setStored(boolean value)
設置爲true表示要在正向文件.fdx/.fdt中存儲這個域。
void org.apache.lucene.document.FieldType.setTokenized(boolean value)
設置爲true表示對內容按照預先配置的analyzer進行分詞。
org.apache.lucene.document.TextField
Field的子類。
org.apache.lucene.document.TextField.TextField(String name, String value, Store store)
構造函數。內部調用setTokenized(true)實現分詞。通常用於文檔正文。
org.apache.lucene.document.StringField
Field的子類。
org.apache.lucene.document.StringField.StringField(String name, String value, Store stored)
構造函數。內部調用setTokenized(false)設置不分詞。通常用於國家名、做者名、id等。
org.apache.lucene.document.NumericDocValuesField
存儲long類型。日期與時間也能夠轉換爲數字類型存儲與篩選。
org.apache.lucene.document.DoubleDocValuesField
存儲double類型。
org.apache.lucene.index.IndexWriter
建立並維護索引的類。
org.apache.lucene.index.IndexWriter.IndexWriter(Directory d, IndexWriterConfig conf)
構造函數。
org.apache.lucene.index.IndexWriterConfig
表明IndexWriter的配置。
org.apache.lucene.index.IndexWriterConfig.IndexWriterConfig(Analyzer analyzer)
構造函數。
void org.apache.lucene.index.IndexWriter.addDocument(Iterable<? extends IndexableField> doc)
向索引中添加文檔。
void org.apache.lucene.index.IndexWriter.deleteDocuments(Term... terms)
刪除指定的文檔。若是隻想刪除單個文檔,務必確保傳入的域值只會匹配到單個文檔,就像數據庫中表的主鍵PrimaryKey那樣。
void org.apache.lucene.index.IndexWriter.deleteDocuments(Query... queries)
刪除指定的文檔。注意事項同上。
void org.apache.lucene.index.IndexWriter.updateDocument(Term term, Iterable<? extends IndexableField> doc)
首先刪除與term匹配的全部文檔,而後添加新文檔。這個方法是經過調用deleteDocuments()與addDocument()函數實現的。
int org.apache.lucene.index.IndexWriter.maxDoc()
返回索引中未刪除+已刪除的文檔數。
int org.apache.lucene.index.IndexWriter.numDocs()
返回索引中未刪除的文檔數。
void org.apache.lucene.index.IndexWriter.commit()
一些更改會被緩存,如增刪文檔、添加索引。調用此方法當即向索引提交待定的更改。
void org.apache.lucene.index.IndexWriter.close()
關閉相關的資源並釋放索引的「write lock'」。關閉前會自動提交待定的更改。
org.apache.lucene.index.IndexReader
抽象類,讀索引。
DirectoryReader org.apache.lucene.index.DirectoryReader.open(Directory directory)
在指定的目錄上打開索引。如 IndexReader reader=DirectoryReader.open(directory);
Document org.apache.lucene.search.IndexSearcher.doc(int docID)
根據id讀doc。
org.apache.lucene.search.IndexSearcher
在單索引上搜索。
org.apache.lucene.search.IndexSearcher.IndexSearcher(IndexReader r)
構造函數。
TopDocs org.apache.lucene.search.IndexSearcher.search(Query query, int n)
搜索並返回top n 的文檔。
void org.apache.lucene.search.IndexSearcher.search(Query query, Collector results)
search()的重載函數。
TopFieldDocs org.apache.lucene.search.IndexSearcher.search(Query query, int n,Sort sort)
search()的重載函數。
org.apache.lucene.search.TopDocs
類,表示搜索的返回結果。
float org.apache.lucene.search.TopDocs.getMaxScore()
結果列表中文檔的最大得分值。
ScoreDoc[] org.apache.lucene.search.TopDocs.scoreDocs
public 字段,它沒有get()方法,直接用。
org.apache.lucene.search.ScoreDoc
類。TopDocs內的基本存儲單位。有int doc 與float score兩個字段。
int org.apache.lucene.search.ScoreDoc.doc
這個ScoreDoc的id。而後可根據IndexSearcher.doc(int docID)拿到原始doc。
org.apache.lucene.search.TopFieldDocs
TopDocs的子類,表明IndexSearcher.search(Query, int, Sort).方法的返回結果。
SortField[] org.apache.lucene.search.TopFieldDocs.fields
字段。表明者若干排序依據。
ScoreDoc[] org.apache.lucene.search.TopDocs.scoreDocs
繼承的父類的字段,盛放的實際是FieldDoc。
org.apache.lucene.search.FieldDoc
ScoreDoc的子類。
Object[] org.apache.lucene.search.FieldDoc.fields
字段。從前到後依次盛放着各項排序標準的分數,爲int,float等。
IndexSearcher.search()->TopDocs->topdocs.scoreDocs->ScoreDoc[]->docid=ScoreDoc.doc->Document=IndexSearcher.doc(id)
org.apache.lucene.index.Term
與field概念相似,只不過field.value爲完整的內容,term.value爲感興趣的切分後的詞。
org.apache.lucene.index.Term.Term(String fld, String text)
構造函數。如Term term=new Term("field","content");
「this」、「,」之類的停用詞通常會被收錄進索引中,但在搜索的時候被過濾掉。
對域值分析並生成token,可通俗地理解爲分詞器。
9.Query
查詢類,抽象類
TermQuery 最簡單、最基本的Query,用來查詢不切分的單詞。依靠Term類初始化
如Query query=new TermQuery(term);
org.apache.lucene.queryparser.classic.QueryParser
此類用於將lucene查詢表達式轉換爲內置的查詢類型。
org.apache.lucene.queryparser.classic.QueryParser.QueryParser(String fieldName, Analyzer a)
構造函數。
Query org.apache.lucene.queryparser.classic.QueryParserBase.parse(String query)
獲得Query對象。
編寫自定義的Colletor,能夠對搜索返回的文檔實現更精確的控制。