搜索應用參考示例XXL-SEARCH 原 薦

《搜索應用參考示例XXL-SEARCH》

GitHub release License donate

一、簡介

1.1 概述

XXL-SEARCH 是以 "lucene/elasticsearch" 爲核心的,Pragmatic風格的搜索應用參考示例,是索引搜索世界中的主流技術選型,最佳實踐的總結與演示。

1.2 特性

  • 1、Quickstart:一個完整的 "搜索列表頁" 演示應用,演示搜索的開發和使用的完整流程。

    《演示功能列表》 - 1、新增一條索引: - 索引字段支持 "排序" - 索引字段支持 "分詞"; - 一個Field支持索引綁定多個值, 實現一對多索引List功能; 比如在商戶打標籤時, 可以給一個商戶打上多個標籤; - 2、更新一條索引 - 3、刪除一條索引 - 4、清空索引 - 5、查詢: - 精確查詢: 根據綁定的索引, 進行精確查詢; - 分詞查詢: 通過分詞, 進行模糊查詢; - 範圍查詢: 針對同一個字段, 支持在指定區間內查詢; - 關聯查詢: 針對不同字段, 支持多字段關聯查詢; - 分頁: 支持分頁功能; - 排序: 支持排序功能;

  • 2、多種方案:目前演示項目, 基於 "lucene、elasticsearch" 兩種方案分別進行演示了開發流程。

  • 3、"搜索小程序", 基於Lucene實現, 可以生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增加系統的搜索功能;

1.3 下載

源碼倉庫地址

源碼倉庫地址Release Download
https://github.com/xuxueli/xxl-searchDownload
https://gitee.com/xuxueli0323/xxl-searchDownload

技術交流

1.4 環境

  • Maven3+

  • Jdk1.7+

  • Tomcat7+

  • Lucene5+

  • Elasticsearch2+

二、用例演示

源碼目錄介紹

- /xxl-search-client    : "xxl-search-example" 依賴的搜索核心包, 內置lucene、elasticsearch 兩種搜索實現方案;
- /xxl-search-example   : "搜索列表頁" 演示項目, 基於 "xxl-search-client" 實現;
- /xxl-search-embed     : "搜索小程序" 項目, 基於Lucene實現, 可以生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增加系統的搜索功能;

主要包括下面兩個項目:

  • 1、"搜索列表頁" 演示項目 ("xxl-search-client" 和 "xxl-search-example" 組成);

示例以一個完整的 "搜索列表頁" 應用展開,可以覆蓋大部分搜索列表開發需求。搜索列表需求互聯網互聯網公司非常常見, 如 "淘寶的商品搜索列表頁"、"京東的商戶搜索列表頁" 和 "安居客的房產搜索列表頁" 等;

  • 2、"搜索小程序" 項目 ("xxl-search-embed" 組成);

基於Lucene實現, 可以生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增加系統的搜索功能;

1、"搜索列表頁" 演示項目

見項目 "xxl-search-example"

  • 1、設置搜索方案

輸入圖片說明

目前, 針對 "搜索列表頁" 的演示項目, 已經內置實現兩種搜索方案, 通過上圖參數 "xxl.search.type" 配置:

ES : 基於elasticsearch的方案, 依賴elasticsearch集羣, 天然支持分佈式;
LUCENE : 基於lucene的方案, 不依賴第三方服務, 但是原生lucene開發不支持分佈式;
  • 2、配置 "lucene"方案 的索引目錄 (搜索方案選擇爲 LUCENE 時有效)

如上圖, 設置參數 "lucene.directory" 的值爲指定磁盤目錄即可;

  • 3、配置 "elasticsearch"方案 的集羣地址 (搜索方案選擇爲 ES 時有效)

如上圖, 設置參數 "es.address" 的值爲elasticsearch的集羣地址即可, 地址格式爲 "ip1:port,ip2:port" ;

  • 4、部署並訪問 "搜索列表頁"

部署 "xxl-search-example" 項目, 訪問項目跟地址即可:

輸入圖片說明

從上圖可知, 演示界面主要分爲兩個區域:

搜索區域: 即頁面上方的 "條件篩選區域" 和 "搜索列表區域", 提供對索引數據的查詢;
原始數據區域: 即頁面下方 "商戶原始數據" 列表區域, 提供對索引數據的 CRUD 功能; 

"搜索列表頁" 演示頁面功能介紹:

操作操作相關:
    1、"清空索引庫" 按鈕: 清空全部索引數據;
    2、"全量索引" 按鈕: 以 "商戶原始數據" 列表中數據爲基礎 , 進行全量索引;
    3、"新增一行" 按鈕: 在 "商戶原始數據" 列表下新增一行, 完善數據後點擊 "保存" 按鈕, 可新增一條索引數據;
    4、"更新" 按鈕: 在 "商戶原始數據" 列表中每條記錄右側, 點擊後將會更新該條數據對應的索引;
    5、"刪除" 按鈕: 在 "商戶原始數據" 列表中每條記錄右側, 點擊後將會刪除該條數據對應的索引;
索引查詢相關:
    1、"商戶" 輸入框: 將會分詞查詢匹配的商戶;
    2、"城市" 單選框: 將會查詢對應城市下的商戶;
    3、"標籤" 複選框: 將會跟選中標籤綁定的商戶;
    4、"排序" 單選框: 將會選中排序字段進行商戶排序;

2、"搜索小程序" 項目

見項目 "xxl-search-example"

注意: 分詞器使用了 "IKAnalyzer", 需要確保本地maven倉庫中已經存在 "IKAnalyzer" 依賴。項目中已經提供了最新版本的 "IKAnalyzer" ,見路徑 "xxl-search/xxl-search-embed/src/test/resources/IKAnalyzer-5.3.0.jar"

1、運行進入主界面:

該項目是一個JAR項目, 主方法爲: com.xxl.search.embed.Application , 運行可查看主界面如下:

輸入圖片說明

2、配置 "索引模板參數", 生成索引模板 :

上圖中 "索引模板參數" 輸入框中, 可以輸入多個參數, 定製索引模板。

多個參數用逗號 "," 分隔, 必須報刊參數 "keywords", 該參數對應的數據將會被索引分詞, 可通過下面搜索框搜索;

點擊 "生成模板" 按鈕, 將會在 "索引生成目錄" 輸入框對應的目錄下, 生成索引模板, 索引模板是一個 excel表格, 如下圖所示:

輸入圖片說明

3、根據索引模板, 填充索引數據 :

輸入圖片說明

4、生成索引文件:

點擊 "生成索引文件" 按鈕, 將會根據索引模板中的數據, 在 "索引生成目錄" 下的 "search_fs" 目錄中生成索引文件, 如下圖:

輸入圖片說明

5、索引查詢:

在最下方的 "搜索" 輸入框中輸入關鍵字, 點擊右側的 "搜索" 按鈕, 即可在索引文件中進行分詞搜索, 關鍵詞和索引模板中的參數 "keywords" 進行分詞匹配:

輸入圖片說明

可通過一下命令, 將項目打包成JAR包:

// package jar witch lib
mvn dependency:copy-dependencies -DoutputDirectory=lib   -DincludeScope=compile

三、技術實現

Lucene & Elasticsearch

四、歷史版本

1.2 特性

  • 1、Quickstart:一個完整的 "搜索列表頁" 演示應用,演示搜索的開發和使用的完整流程。

    《演示功能列表》 - 1、新增一條索引: - 索引字段支持 "排序" - 索引字段支持 "分詞"; - 一個Field支持索引綁定多個值, 實現一對多索引List功能; 比如在商戶打標籤時, 可以給一個商戶打上多個標籤; - 2、更新一條索引 - 3、刪除一條索引 - 4、清空索引 - 5、查詢: - 精確查詢: 根據綁定的索引, 進行精確查詢; - 分詞查詢: 通過分詞, 進行模糊查詢; - 範圍查詢: 針對同一個字段, 支持在指定區間內查詢; - 關聯查詢: 針對不同字段, 支持多字段關聯查詢; - 分頁: 支持分頁功能; - 排序: 支持排序功能;

  • 2、多種方案:目前演示項目, 基於 "lucene、elasticsearch" 兩種方案分別進行演示了開發流程。

  • 3、"搜索小程序", 基於Lucene實現, 可以生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增加系統的搜索功能;

TODO

  • 1、新增 solr 搜索方案;
  • 2、新增 IK 等分詞器支持;
  • 3、底層API封裝優化;

五、其他

5.1 項目貢獻

歡迎參與項目貢獻!比如提交PR修復一個bug,或者新建 Issue 討論新特性或者變更。

5.2 開源協議和版權

產品開源免費,並且將持續提供免費的社區技術支持。個人或企業內部可自由的接入和使用。

  • Licensed under the GNU General Public License (GPL) v3.
  • Copyright (c) 2015-present, xuxueli.

捐贈

無論金額多少都足夠表達您這份心意,非常感謝 :) 前往捐贈

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