java搜索引擎: lucene學(xué)習(xí)筆記
Posted on 2007-03-05 08:36 skycity 閱讀(331) 評論(0) 編輯 收藏 所屬分類: APACHE開源項目
簡介
Doug Cutting 于2000年開始的項目 2001年9月后加入apache, Lucene是Doug Cutting的middle name 。 目前Lucene已經(jīng)是apache的top level的項目, 已經(jīng)不在jakarta下面, 同時也有了python,perl,c++,.net, Ruby(進(jìn)行中)多個版本?
Lucene 主要的兩個任務(wù):indexing and searching
stop words: 出現(xiàn)頻率非常高的一些詞匯,它們一般沒有檢索的意義, 比如英文中的(as a, an, the, in)
Lyyb2001
Doug Cutting 于2000年開始的項目 2001年9月后加入apache, Lucene是Doug Cutting的middle name 。 目前Lucene已經(jīng)是apache的top level的項目, 已經(jīng)不在jakarta下面, 同時也有了python,perl,c++,.net, Ruby(進(jìn)行中)多個版本?
Lucene 主要的兩個任務(wù):indexing and searching
Indexing主要使用的類 | |
IndexWriter | index文件由它創(chuàng)建 |
Directory | 標(biāo)志Index路徑的類:FSDirectory(文件系統(tǒng))和RAMDirectory(內(nèi)存) |
Analyzer | 分析器,處理分詞,大小寫,詞根,消除stop words等,轉(zhuǎn)換格式 |
document | 用于存儲field對象 |
Field | 有4(5?)種類型的Field, 下面專門列出 |
stop words: 出現(xiàn)頻率非常高的一些詞匯,它們一般沒有檢索的意義, 比如英文中的(as a, an, the, in)
類型 | Analyzed | Indexed | Stored | 說明 |
Field.Keyword(String) | ? | Y | Y | 儲存直接檢索的對象(身份證號,姓名,日期) |
Field.UnIndexed(String,String) | ? | ? | Y | 不用于檢索信息,顯示文件類型、地址 |
Field.UnStored(String,String) | Y | ? | ? | 大段文本內(nèi)容,會用來檢索,但是不存儲 |
Field.Text(String,String) | Y | Y | Y | 檢索,獲取都需要的內(nèi)容,直接放index中,不過這樣會增大index |
Field.Text(String,Reader) | Y | Y | ? | 建議采用Unstored的策略. |
Searching主要使用的類 | |
IndexSearcher | 以只讀的方式訪問index(注意IndexReader不是只讀的),需要傳給他一個Query對象來搜索 |
Term | Term是一個搜索的基本單位,包含F(xiàn)ield(目標(biāo))和value(條件),可以直接用new Term("field","value")構(gòu)造 |
uery | uery有很多子類,比如BooleanQuery,PhraseQuery等,可以在Term基礎(chǔ)上加上邏輯(是 否, 或) |
TermQuery | 很基本的Query, 可以由term構(gòu)造 new TermQuery(term); |
Hits | 包含了搜索的結(jié)構(gòu),默認(rèn)按照相關(guān)度排序,hits并不會把所有記錄(可能很大)直接保存,而是有一個lazy loading機(jī)制 |
Lyyb2001