基於JAVA的全文索引引擎Lucene簡介 中

2021-08-22 01:58:30 字數 1332 閱讀 8733

安裝和使用

lucene的組成結構:對於外部應用來說索引模組(index)和檢索模組(search)是主要的外部應用入口

org.apache.lucene.search/

搜尋入口

org.apache.lucene.index/

索引入口

org.apache.lucene.analysis/

語言分析器

org.apache.lucene.queryparser/

查詢分析器

org.apache.lucene.document/

儲存結構

org.apache.lucene.store/

底層io/儲存結構

org.apache.lucene.util/

一些公用的資料結構

簡單的例子演示一下lucene的使用方法:

索引過程:從命令列讀取檔名(多個),將檔案分路徑(path欄位)和內容(body欄位)2個字段進行儲存,並對內容進行全文索引:索引的單位是document物件,每個document物件包含多個欄位field物件,針對不同的字段屬性和資料輸出的需求,對字段還可以選擇不同的索引/儲存字段規則,列表如下:

方法切詞

索引儲存

用途field.text(string name, string value)

yesyes

yes切分詞索引並儲存,比如:標題,內容字段

field.text(string name, reader value)

yesyes

no切分詞索引不儲存,比如:meta資訊,

不用於返回顯示,但需要進行檢索內容

field.keyword(string name, string value)

noyes

yes不切分索引並儲存,比如:日期字段

field.unindexed(string name, string value)

nono

yes不索引,只儲存,比如:檔案路徑

field.unstored(string name, string value)

yesyes

no只全文索引,不儲存

索引過程中可以看到:

檢索過程和結果顯示:

搜尋結果返回的是hits物件,可以通過它再訪問document==>field中的內容。

假設根據body欄位進行全文檢索,可以將查詢結果的path欄位和相應查詢的匹配度(score)列印出來,

在整個檢索過程中,語言分析器,查詢分析器,甚至搜尋器(searcher)都是提供了抽象的介面,可以根據需要進行定製。 

mysql全文索引的坑 MySQL全文索引問題

我有乙個包含以下資料的 文章 mysql select from articles id title body 1 mysql tutorial dbms stands for database 2 how to use mysql well after you went through a 3 o...

全文索引的使用

sp fulltext database enable 啟動全文索引 sp fulltext catalog member info create 建立全文索引目錄 create unique index pk memberid on member memberid 需要建立唯一索引 sp full...

全文目錄和全文索引的關係

1.全文索引儲存關於重要詞和這些詞在特定列中的位置的資訊。全文查詢利用這些資訊,可快速搜尋包含具體某個詞或一組詞的行。2.全文索引包含在全文目錄中。3.每個資料庫可以包含乙個或多個全文目錄。乙個目錄只能屬於乙個資料庫,而每個目錄可以包含乙個或多個表的全文索引。乙個表只能有乙個全文索引,因此每個有全文...