XXL-SEARCH 是以 "lucene/elasticsearch" 爲核心的,Pragmatic風格的搜索應用參考示例,是索引搜索世界中的主流技術選型,最佳實踐的總結與演示。html
一、Quickstart:一個完整的 "搜索列表頁" 演示應用,演示搜索的開發和使用的完整流程。git
《演示功能列表》
- 一、新增一條索引:
- 索引字段支持 "排序"
- 索引字段支持 "分詞";
- 一個Field支持索引綁定多個值, 實現一對多索引List功能; 好比在商戶打標籤時, 能夠給一個商戶打上多個標籤;
- 二、更新一條索引
- 三、刪除一條索引
- 四、清空索引
- 五、查詢:
- 精確查詢: 根據綁定的索引, 進行精確查詢;
- 分詞查詢: 經過分詞, 進行模糊查詢;
- 範圍查詢: 針對同一個字段, 支持在指定區間內查詢;
- 關聯查詢: 針對不一樣字段, 支持多字段關聯查詢;
- 分頁: 支持分頁功能;
- 排序: 支持排序功能;github
三、"搜索小程序", 基於Lucene實現, 能夠生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增長系統的搜索功能;小程序
源碼倉庫地址 | Release Download |
---|---|
https://github.com/xuxueli/xxl-search | Download |
https://gitee.com/xuxueli0323/xxl-search | Download |
Tomcat7+elasticsearch
Elasticsearch2+maven
- /xxl-search-client : "xxl-search-example" 依賴的搜索核心包, 內置lucene、elasticsearch 兩種搜索實現方案; - /xxl-search-example : "搜索列表頁" 演示項目, 基於 "xxl-search-client" 實現; - /xxl-search-embed : "搜索小程序" 項目, 基於Lucene實現, 能夠生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增長系統的搜索功能;
主要包括下面兩個項目:分佈式
示例以一個完整的 "搜索列表頁" 應用展開,能夠覆蓋大部分搜索列表開發需求。搜索列表需求互聯網互聯網公司很是常見, 如 "淘寶的商品搜索列表頁"、"京東的商戶搜索列表頁" 和 "安居客的房產搜索列表頁" 等;優化
基於Lucene實現, 能夠生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增長系統的搜索功能;ui
見項目 "xxl-search-example"excel
目前, 針對 "搜索列表頁" 的演示項目, 已經內置實現兩種搜索方案, 經過上圖參數 "xxl.search.type" 配置:
ES : 基於elasticsearch的方案, 依賴elasticsearch集羣, 自然支持分佈式; LUCENE : 基於lucene的方案, 不依賴第三方服務, 可是原生lucene開發不支持分佈式;
如上圖, 設置參數 "lucene.directory" 的值爲指定磁盤目錄便可;
如上圖, 設置參數 "es.address" 的值爲elasticsearch的集羣地址便可, 地址格式爲 "ip1:port,ip2:port" ;
部署 "xxl-search-example" 項目, 訪問項目跟地址便可:
從上圖可知, 演示界面主要分爲兩個區域:
搜索區域: 即頁面上方的 "條件篩選區域" 和 "搜索列表區域", 提供對索引數據的查詢; 原始數據區域: 即頁面下方 "商戶原始數據" 列表區域, 提供對索引數據的 CRUD 功能;
"搜索列表頁" 演示頁面功能介紹:
操做操做相關: 一、"清空索引庫" 按鈕: 清空所有索引數據; 二、"全量索引" 按鈕: 以 "商戶原始數據" 列表中數據爲基礎 , 進行全量索引; 三、"新增一行" 按鈕: 在 "商戶原始數據" 列表下新增一行, 完善數據後點擊 "保存" 按鈕, 可新增一條索引數據; 四、"更新" 按鈕: 在 "商戶原始數據" 列表中每條記錄右側, 點擊後將會更新該條數據對應的索引; 五、"刪除" 按鈕: 在 "商戶原始數據" 列表中每條記錄右側, 點擊後將會刪除該條數據對應的索引; 索引查詢相關: 一、"商戶" 輸入框: 將會分詞查詢匹配的商戶; 二、"城市" 單選框: 將會查詢對應城市下的商戶; 三、"標籤" 複選框: 將會跟選中標籤綁定的商戶; 四、"排序" 單選框: 將會選中排序字段進行商戶排序;
見項目 "xxl-search-example"
注意: 分詞器使用了 "IKAnalyzer", 須要確保本地maven倉庫中已經存在 "IKAnalyzer" 依賴。項目中已經提供了最新版本的 "IKAnalyzer" ,見路徑 "xxl-search/xxl-search-embed/src/test/resources/IKAnalyzer-5.3.0.jar"
一、運行進入主界面:
該項目是一個JAR項目, 主方法爲: com.xxl.search.embed.Application , 運行可查看主界面以下:
二、配置 "索引模板參數", 生成索引模板 :
上圖中 "索引模板參數" 輸入框中, 能夠輸入多個參數, 定製索引模板。
多個參數用逗號 "," 分隔, 必須報刊參數 "keywords", 該參數對應的數據將會被索引分詞, 可經過下面搜索框搜索;
點擊 "生成模板" 按鈕, 將會在 "索引生成目錄" 輸入框對應的目錄下, 生成索引模板, 索引模板是一個 excel表格, 以下圖所示:
三、根據索引模板, 填充索引數據 :
四、生成索引文件:
點擊 "生成索引文件" 按鈕, 將會根據索引模板中的數據, 在 "索引生成目錄" 下的 "search_fs" 目錄中生成索引文件, 以下圖:
五、索引查詢:
在最下方的 "搜索" 輸入框中輸入關鍵字, 點擊右側的 "搜索" 按鈕, 便可在索引文件中進行分詞搜索, 關鍵詞和索引模板中的參數 "keywords" 進行分詞匹配:
可經過一下命令, 將項目打包成JAR包:
// package jar witch lib mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=compile
一、Quickstart:一個完整的 "搜索列表頁" 演示應用,演示搜索的開發和使用的完整流程。
《演示功能列表》
- 一、新增一條索引:
- 索引字段支持 "排序"
- 索引字段支持 "分詞";
- 一個Field支持索引綁定多個值, 實現一對多索引List功能; 好比在商戶打標籤時, 能夠給一個商戶打上多個標籤;
- 二、更新一條索引
- 三、刪除一條索引
- 四、清空索引
- 五、查詢:
- 精確查詢: 根據綁定的索引, 進行精確查詢;
- 分詞查詢: 經過分詞, 進行模糊查詢;
- 範圍查詢: 針對同一個字段, 支持在指定區間內查詢;
- 關聯查詢: 針對不一樣字段, 支持多字段關聯查詢;
- 分頁: 支持分頁功能;
- 排序: 支持排序功能;
三、"搜索小程序", 基於Lucene實現, 能夠生成 "索引庫文件", copy該文件至任何系統, 可嵌入式的增長系統的搜索功能;
歡迎參與項目貢獻!好比提交PR修復一個bug,或者新建 Issue 討論新特性或者變動。
產品開源免費,而且將持續提供免費的社區技術支持。我的或企業內部可自由的接入和使用。
不管金額多少都足夠表達您這份心意,很是感謝 :) 前往捐贈