摘要:概述是的一個頂級開源項目,采用開發,它是基于的全文搜索服務器。提供了比更為豐富的查詢語言,同時實現了可配置可擴展,并對索引搜索性能進行了優化。搜索只需要發送請求,然后對返回等格式的查詢結果進行解析,組織頁面布局。
Solr概述
Solr 是Apache的一個頂級開源項目,采用Java開發,它是基于Lucene的全文搜索服務器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展,并對索引、搜索性能進行了優化。
Solr可以獨立運行在Jetty、Tomcat等這些Servlet容器中,Solr 索引的實現方法很簡單,用 POST 方法向 Solr 服務器發送一個描述 Field 及其內容的 XML 文檔,Solr根據xml文檔添加、刪除、更新索引 。Solr 搜索只需要發送 HTTP GET 請求,然后對 Solr 返回Xml、json等格式的查詢結果進行解析,組織頁面布局。Solr不提供構建UI的功能,Solr提供了一個管理界面,通過管理界面可以查詢Solr的配置和運行情況。
拉取 Solr 鏡像:docker pull solr:7.4.0
啟動 Solr 容器docker run --name taotao-solr -d -p 8983:8983 -t solr:7.4.0
訪問 http://114.115.215.xxx:8983/
Solr界面功能
docker exec -it --user=solr mysolr bin/solr create_core -c shop安裝中文分詞器、并設置業務系統Field
分詞器安裝參考文章:https://github.com/ik-analyzer
文件傳輸傳輸參考:Docker容器和本機之間的文件傳輸
傳jar包和配置文件wget方式把jar包下載到根目錄:
wget https://search.maven.org/remotecontent?filepath=com/github/magese/ik-analyzer/7.7.0/ik-analyzer-7.7.0.jar
找到容器長ID:docker inspect my-solr | grep Id
將jar包放入Solr服務的webapp/WEB-INF/lib/目錄下
docker cp /root/ik-analyzer-7.6.0.jar 9d7cf2c5315e405e7a8cadc40dcef93fd893f39f0cf70ad42c3b1b70729d2423:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib
將resources目錄下的5個配置文件放入solr服務的webapp/WEB-INF/classes/目錄下;
① IKAnalyzer.cfg.xml ② ext.dic ③ stopword.dic ④ ik.conf ⑤ dynamicdic.txt配置managed-schema
進入solr容器:docker exec -it -u root my-solr /bin/bash
編輯managed-schema文件:vim /opt/solr/server/solr/shop/conf/managed-schema
把下面一段加到最后
別忘了重啟容器:docker restart my-solr
代碼解釋:加了type="text_ik"表示這個字段使用分詞器分拆,
新建springboot項目,加依賴:
org.apache.solr solr-solrj 7.7.1
配置文件添加:
spring.data.solr.host=http://114.115.215.xxx:8983/solr
核心代碼:
@RestController public class HelloController { @Autowired private SolrClient client; @RequestMapping("/hello") public Object hello() throws IOException, SolrServerException { SolrInputDocument doc = new SolrInputDocument(); Listlist= itemInfoMapper.findAll(); doc.setField("item_title","Apple iPhone X (A1865) 64GB 深空灰色 移動聯通電信4G手機"); doc.setField("item_sell_point","【搶券立減200元!】5.8英寸視網膜全面屏,無線充電,面容ID,1200萬后置雙攝。"); doc.setField("item_price",6299.00); doc.setField("item_category_name","手機"); doc.setField("item_desc","單卡單待網絡制式:4G LTE全網通機身內存:64GB4G LTE網絡特性:移動4G"); client.add("shop",doc); client.commit("shop"); return "ok"; } }
測試:
為什么這么多數據,不是只加了一條嘛? 我已經走完了下面一步,這里只是為了演示給你看。
把數據庫中所有商品信息導入索引庫先把mysql、mybatis依賴全部加進來
新建實體類
public class Item { private Long id; private String title; private String sell_point; private Long price; private String image; private String category_name; }
dao層
public interface ItemInfoMapper { @Select("SELECT " + " a.id, " + " a.title, " + " a.sell_point, " + " a.price, " + " a.image, " + " b. NAME category_name " + "FROM " + " tb_item a " + "LEFT JOIN tb_item_cat b ON a.cid = b.id") ListfindAll(); }
記得讓springboot掃描哦
@SpringBootApplication @MapperScan("com.yungou.shop.shopsearch.Mapper") public class ShopSearchApplication { public static void main(String[] args) { SpringApplication.run(ShopSearchApplication.class, args); } }
下面開發核心代碼了,登登登登:
@RestController public class HelloController { @Autowired private SolrClient client; @Autowired private ItemInfoMapper itemInfoMapper; @RequestMapping("/hello") public Object hello() throws IOException, SolrServerException { SolrInputDocument doc = new SolrInputDocument(); Listlist= itemInfoMapper.findAll(); for (ItemInfo itemInfo:list){ doc.setField("item_title",itemInfo.getTitle()); doc.setField("item_sell_point",itemInfo.getSell_point()); doc.setField("item_price",itemInfo.getPrice()); doc.setField("item_category_name",itemInfo.getCategory_name()); client.add("shop",doc); } client.commit("shop"); return "ok"+list.size(); } }
讓數據加載一會,數據多的話可能要等幾分鐘。
回到管理界面
我們看到已經有6666條數據加載進來了,大功告成,666!
經過這個案例,應該是把線上部署的大多數情況都過了一遍。享受docker部署便利的同時,由于第一次操作docker文件,這里耗了點時間。最蠢的事情是明明加入的是text_ik,自己一直在搜ik,怎么搜來搜去搜不到,明明已經啟動成功了呀。然后弄來弄去才發現,也費了點時間。警惕自己以后一定要細心,注意細節呀。除此之外,其他的都比較順利。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27712.html
摘要:因為他們可能會有許多顧客對相同的商品目錄進行多次請求。然而,對于我們的參考架構,我們想完全在中實現一個多方面搜索。 本文源地址:http://www.mongoing.com/blog/retail-reference-architecture-part-1 如今,產品目錄數據管理對零售商而言是一個非常復雜的問題。經過多年對多個龐大、由供應商提供的系統的依賴之后,零售商目前正在重新考...
摘要:因為他們可能會有許多顧客對相同的商品目錄進行多次請求。然而,對于我們的參考架構,我們想完全在中實現一個多方面搜索。 本文源地址:http://www.mongoing.com/blog/retail-reference-architecture-part-1 如今,產品目錄數據管理對零售商而言是一個非常復雜的問題。經過多年對多個龐大、由供應商提供的系統的依賴之后,零售商目前正在重新考...
摘要:在全國知識圖譜與語義計算大會上,阿里巴巴集團副總裁藏經閣計劃阿里負責人墻輝玄難宣布藏經閣計劃首次在阿里應用落地,以及首次披露大規模知識構建技術細節,并從三個方面進行了解讀。 2018年4月,阿里聯合清華大學、浙江大學、中科院自動化所、中科院軟件所、蘇州大學等五家機構,聯合發布藏經閣(知識引擎)研究計劃,同時還宣布打算用一年時間初步建成首個開放的知識引擎服務平臺,服務社會。 在全國知識圖...
閱讀 2951·2021-11-25 09:43
閱讀 3327·2021-11-24 09:39
閱讀 2828·2021-09-22 15:59
閱讀 2174·2021-09-13 10:24
閱讀 509·2019-08-29 17:02
閱讀 2098·2019-08-29 13:23
閱讀 3058·2019-08-29 13:06
閱讀 3539·2019-08-29 13:04