1、分塊索引。為新增文件單獨創(chuàng)建索引,再合并。 (索引優(yōu)化技術)
2、只要擴展相應接口,就可以支持新的語言和文件格式。
3、對每個Lucene例子進行Junit測試,這是一項有意思的測試。 把精力集中到比較小的細節(jié)中去,并且可以毫無后顧之憂的修改系統(tǒng)中的部分代碼。
4、可以通過Lucene官方的PowerBy找到其他一些以Lucene為基礎的開源軟件。
5、Lucene是Doug妻子的中間名:這也是她祖母的姓。
Lucene能夠對任意可轉換為文本格式的數(shù)據(jù)進行索引和搜索。
整個Lucene的核心,就是索引兩個字。
Directory用于指定索引所在的位置,Query對應于多種實現(xiàn)。
技術:
1、Lucene的一個方便之處在于,它允許用于不同F(xiàn)ield的Document在一個索引中共存。
2、一個Document可以有多個Field,而多個Field可以對應于同一個域,如"contents"、"title"。
3、沒有設置Index的Field是不能設置norm的,Field、Indexed、Norm三者之間的關系是什么?
索引:
1、索引是Lucene最核心的東西。最簡單的索引大致如下:以term為entry,命中該term的所有doc是一個列表。這個列表可以是排序的。Lucene的實際索引實現(xiàn)是否也是這樣的。以前在一個IR的ppt中看到,一般的SE索引都是這個結構的,Lucene索引有什么特別之處嗎?這個可以深入了解下的。
2、使用Luke時的一個發(fā)現(xiàn)。在Document標簽,可以通過Term遍歷包含該Term的Document列表。點擊show all,這會跳轉到Search標簽。也可以點擊Show Position顯示文檔的位置信息。 這里的term frequency是指 term在文檔中的出現(xiàn)次數(shù)。 Lucene中Term對應Document真的是組織成一個列表嗎?或者做過一些優(yōu)化?
3、
關鍵技術:
1、列舉一些重要的類,也是深入了解Lucene的入口:
Analyzer分詞器,將文檔(索引時)和查詢字符(查詢時)進行分詞
Query 查詢條件,可以包含多個Term,進行布爾查詢,區(qū)間查詢等。BooleanQuery本身是布爾查詢子句的容器。
Term 分詞項,對應于索引中的入口?
Directory 指向索引目錄,可以使FS或RAM等,還可以自己做一些實現(xiàn),哈哈
Similarity 用于對詞進行評分。這個地方有很多工作可以做的。
查詢表達式,通過QueryParser可以將表達式轉換為特定的Query對象。比直接調用API要清晰。NOT操作必須和一個其他操作結合,才能用于查詢。