對Lucene的總結

一:建立索引和讀取索引的過程如下圖:

二:索引在索引庫中的存放形式如下圖:

                          這是內容庫                                                                              這是目錄庫

IndexWriter按加入的順序爲Document指定一個遞增的id(從0開始),稱爲文檔id。反向索引中存儲的是這個id,文檔存儲中正向索引也是這個id。 業務數據的主鍵id只是文檔的一個字段。

爲從原數據中拿完整數據去展示,一個Document應該包含一個或多個存儲字段來唯一標識一條原數據。

三:創建索引以及存儲文檔的域時的規則如下:

創建好Document後,需要給Document添加Field,不同的Field有不同索引、分詞和存儲規則。

1:什麼樣的域需要被存儲?

查詢時,需要從Document中獲取的內容對應的域都應該被存儲。

2:什麼樣的域需要被索引?

要被搜索的域需要被索引。

3:什麼樣的域需要被分詞?

在被搜索時,可能只會輸入內容的一部分來查詢的域需要被分詞,例如:商品名稱,商品介紹,文章內容等;相反,在查詢時必須輸入內容的全部來查詢的域不能分詞,例如:訂單號,電話號碼等。

四:使用lucene提高數據庫中數據的查詢實時度的示意圖

需要注意DB中的哪些數據需要用來創建索引、哪些數據需要存到索引庫中的Document中,最終使用Document中能唯一標識DB中一條記錄的字段來查詢DB,獲取記錄的詳情。

好文章參考鏈接:

https://blog.csdn.net/weixin_42633131/article/details/82873731

https://www.cnblogs.com/lyhero11/p/5192732.html

https://www.cnblogs.com/leeSmall/p/8992708.html(這是一個系列的好文章)

 

疑問:

1:有關索引的選項中,還有更詳細的設置:詞頻,位置,偏移量等,短語查詢、臨近查詢,高亮顯示等功能,和位置、偏移量的關係是什麼?

2:IndexableFieldType 中的 docValuesType方法 就是讓你來爲需要排序、分組、聚合的字段指定如何爲該字段創建文檔->字段值的正向索引的。那麼排序、分組、聚合、分類查詢(面查詢)的字段到底怎麼使用??

3:默認情況下,查詢結果的排序是按得分的大小從大到小排序的嗎?得分到底是怎麼計算的?

4:如果加上排序字段後,得分的排序是不是就不用了,直接用排序字段的排序?

5:lucene的分詞器詳解?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章