1. 程式人生 > >Lucene系列二:Lucene(Lucene介紹、Lucene架構、Lucene整合)

Lucene系列二:Lucene(Lucene介紹、Lucene架構、Lucene整合)

一、Lucene介紹

1. Lucene簡介

  最受歡迎的java開源全文搜尋引擎開發工具包。提供了完整的查詢引擎和索引引擎,部分文字分詞引擎(英文與德文兩種西方語言)。Lucene的目的是為軟體開發人員提供一個簡單易用的工具包,以方便在目標系統中實現全文檢索功能,或者是以此為基礎建立起完整的全文檢索引擎。是Apache的子專案,網址:http://lucene.apache.org/

2. Lucene用途

  為軟體開發人員提供一個簡單易用的工具包,以方便在目標系統中實現全文檢索功能,或者是以此為基礎建立起完整的全文檢索引擎。

3. Lucene適用場景

  在應用中為資料庫中的資料提供全文檢索實現。

  開發獨立的搜尋引擎服務、系統

4. Lucene的特性

  1、穩定、索引效能高

    每小時能夠索引150GB以上的資料。

    對記憶體的要求小——只需要1MB的堆記憶體

    增量索引和批量索引一樣快。

     索引的大小約為索引文字大小的20%~30%。

  2、高效、準確、高效能的搜尋演算法

    良好的搜尋排序。

    強大的查詢方式支援:短語查詢、萬用字元查詢、臨近查詢、範圍查詢等。

    支援欄位搜尋(如標題、作者、內容)。

    可根據任意欄位排序

    支援多個索引查詢結果合併

    支援更新操作和查詢操作同時進行

    支援高亮、join、分組結果功能

    速度快

    可擴充套件排序模組,內建包含向量空間模型、BM25模型可選

    可配置儲存引擎

  3、跨平臺

    純java編寫。

    作為Apache開源許可下的開源專案,你可在商業或開源專案中使用。

     Lucene有多種語言實現版可選(如C、C++、Python等),不光是JAVA。

二、Lucene架構

1. 資料收集

2. 建立索引

3. 索引儲存

4. 搜尋(使用索引)

 三、Lucene整合

 1. 選用的Lucene版本

 選用當前最新版 7.3.0 : https://lucene.apache.org/

 2. 系統要求

 JDK1.8 及以上版本

 3. 整合:將lucene core的jar引入到你的應用中

方式一:官網下載 zip,解壓後拷貝jar到你的工程

方式二:maven 引入依賴

4. Lucene 模組說明

core: Lucene core library 核心模組:分詞、索引、查詢

analyzers-*: 分詞器

facet: Faceted indexing and search capabilities 提供分類索引、搜尋能力

grouping: Collectors for grouping search results. 搜尋結果分組支援

highlighter: Highlights search keywords in results 關鍵字高亮支援

join: Index-time and Query-time joins for normalized content 連線支援

queries: Filters and Queries that add to core Lucene 補充的查詢、過濾方式實現

queryparser: Query parsers and parsing framework 查詢表示式解析模組

spatial: Geospatial search 地理位置搜尋支援 suggest: Auto-suggest and Spellchecking support 拼寫檢查、聯想提示

5. 先引入lucene的核心模組

<!-- lucene 核心模組  -->
<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>7.3.0</version>
</dependency>

 6. 瞭解核心模組的構成