1. 程式人生 > >利用solr實現商品的搜尋功能

利用solr實現商品的搜尋功能

問題提出:當我們訪問購物網站的時候,我們可以根據我們隨意所想的內容輸入關鍵字就可以查詢出相關的內容,這是怎麼做到呢?這些隨意的資料不可能是根據資料庫的欄位查詢的,那是怎麼查詢出來的呢,為什麼千奇百怪的關鍵字都可以查詢出來呢?

答案就是全文檢索工具的實現,luncence採用了詞元匹配和切分詞。舉個例子:北京天安門------luncence切分詞:北京  京天  天安  安門  等等這些分詞。所以我們搜尋的時候都可以檢索到。

有一種分詞器就是IKAnalyzer中文分詞器,它有細粒度切分和智慧切分,即根據某種智慧演算法

這就使用solr的最大的好處:檢索功能的實現。

使用步驟;

(1)solr伺服器搭建,因為solr是用java5開發的,所以需要jdk和tomcat。搭建部署

(2)搭建完成後,我們需要將要展示的欄位引入solr的庫中。配置spring與solr結合,工程啟動的時候啟動solr

(3)將資料庫中的查詢內容匯入到solr索引庫,這裡使用的是solrj的客戶端實現的。具體使用可以參考api

(4)建立搜尋服務,供客戶端呼叫。呼叫solr,查詢內容,這中間有分頁功能的實現。solr高亮顯示的實現。

(5)客戶端接收頁面的請求引數,調用搜索服務,進行搜尋。

業務欄位判斷標準:

1、在搜尋時是否需要在此欄位上進行搜尋。例如:商品名稱、商品的賣點、商品的描述

(這些相當於將標籤給了solr,匯入商品資料後,solr對這些欄位的對應的商品的具體內容進行分詞切分,然後,我們就可以搜尋到相關內容了)

2、後續的業務是否需要用到此欄位。例如:商品id。

需要用到的欄位:

1、商品id

2、商品title

3、賣點

4、價格

5、商品圖片

6、商品分類名稱

7、商品描述

Solr中的業務欄位:

1、id——》商品id

其他的對應欄位建立solr的欄位。

<field name="item_title" type="text_ik" indexed="true" stored="true"/>

<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>

<field name="item_price"  type="long" indexed="true" stored="true"/>

<field name="item_image" type="string" indexed="false" stored="true" />

<field name="item_category_name" type="string" indexed="true" stored="true" />

<field name="item_desc" type="text_ik" indexed="true" stored="false" />

<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>

<copyField source="item_title" dest="item_keywords"/>

<copyField source="item_sell_point" dest="item_keywords"/>

<copyField source="item_category_name" dest="item_keywords"/>

<copyField source="item_desc" dest="item_keywords"/>

重新啟動tomcat

Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優化。

Solr是一個全文檢索伺服器,只需要進行配置就可以實現全文檢索服務。有效降低頻繁訪問資料庫對資料庫造成的壓力。

第一步:將solr部署在Linux系統下。

第二步:solrJ是solr的客戶端,使用它需要依賴solrJ的jar包。

第三步:將資料庫的內容新增到solr的索引庫,這樣查詢就在索引庫查詢,而不是資料庫了。

controller層:

1 2 3 4 5 6 7 8 9 10 11 12 @Controller @RequestMapping("/manager") public class ItemController { @Autowired private ItemService itemService; @RequestMapping("/importall") @ResponseBody public   TaotaoResult importAllItem(){ TaotaoResult result= itemService.importAllItem(); return result; } }<br>service層編寫:<br>多表查詢商品,顯示在頁面的邏輯編寫:<br>mapper.java
1 2 3 4 5 6 7 8 9 10 11 package com.taotao.search.mapper; import java.util.List; import com.taotao.search.pojo.Item; public interface ItemMapper { List<item> getItemList(); }

相關推薦

《商城專案05》--用Solr實現商品搜尋功能

一, Solr的安裝配置 1, 下載資源  (solr-4.10.3.tgz.tgz) 貼個連結參考:  連結:https://pan.baidu.com/s/1rMkFTdoSALB8Q-7jCcb4YA  提取碼:6ken   

利用solr實現商品搜尋功能

問題提出:當我們訪問購物網站的時候,我們可以根據我們隨意所想的內容輸入關鍵字就可以查詢出相關的內容,這是怎麼做到呢?這些隨意的資料不可能是根據資料庫的欄位查詢的,那是怎麼查詢出來的呢,為什麼千奇百怪的關鍵字都可以查詢出來呢? 答案就是全文檢索工具的實現,lunc

壹立方商城----實現商品搜尋功能

1.效果展示 啟動專案,進入淘淘商城首頁,我們搜尋小米 然後商品搜尋頁面就會展示,所有搜尋到的商品(圖片無法顯示,是因為圖片地址失效了,可以顯示的是我自己新增的) 搜尋時,會有關鍵字分詞+高亮 還有分頁效果 2.功能分析 我們在e3-portal-web首

利用redis實現位置搜尋功能(類似:微信附近的人,根據座標來實現

利用redis實現位置搜尋功能(類似:微信附近的人,根據座標來實現,測試可行,沒實際用到) 1. 利用redis的geo功能 主要功能有: geoadd key longitude latitude member … 新增成員經緯度 # 添加了

day73_淘淘商城專案_06_搜尋工程的搭建 + linux下solr索引庫的搭建 + 把商品資料匯入到索引庫中(後臺) + 商品搜尋功能實現(前臺) + 圖片顯示等問題解決_匠心筆記

淘淘商城專案_06 1、搜尋工程的搭建 1.1、Solr服務搭建 1.1.1、solr的環境 1.1.2、solr的搭建步驟 1.1.3、solr的使用 1.2、配置

電商專案day11(商品搜尋功能實現&排序&結果分頁)

今日目標:     完成關鍵字搜尋功能     能夠實現高亮顯示效果     完成查詢分類列表的功能     完成條件過濾構建功能     完成分頁動態

【SSM分散式架構電商專案-24】Solr實現商品搜尋

匯入資料 資料來源,京東: 資料: 修改表結構 匯入圖片資料 測試: Solr的安裝 下載得到zip壓縮包,下載的版本為4.10.2. 檔案大小148MB左右。 1、 將solr-4.10.2.zip檔案拷貝

後臺商品搜尋功能開發SQL

在做後臺的商品搜尋功能開發時遇到了一些問題記錄下來 版本一 <select id="SelectByNameAndParentId resultMap="Base_result" parameterType="map""> select  <include refid="B

vue 實現模糊搜尋功能,vue-element ui改編input模糊查詢

 vue實現模糊搜尋功能 根據輸入的內容進行查詢資料,然後展示含有輸入內容的資料 <input v-model="issue_content" v-on:input ="inputFunc" type="text" placeholder="如何修改密碼"> <di

java 如何讓利用ip 實現登入日誌功能

1.匯入如下pom org.nutz.http.Http; org.nutz.http.Response; iorg.nutz.json.Json; <!--呼叫淘寶介面API的依賴--> <dependency>

基於solr實現商品資訊的全文檢索(windwons)

搭建環境 windows下tomcat+solr   相關軟體準備 1.安裝JDK 2.下載tomcat 3.下載solr-4.10.3.tgz.tgz 4.下載IK分詞器(IKAnalyzer2012FF_hf1.rar)   安裝步驟

利用nodejs實現商品管理系統(二)

下面實現商品管理系統 第一步:對應的ejs與資料交換的編寫格式。 商品列表介面product.ejs <% for(var i=0;i<list.length;i++){%> <tr>

基於jQuery實現頁面搜尋功能

HTML: <div class="table"> <table> <tr id="theader"> <th>姓名</th> <th>性別</th> &l

Solr實現商城搜尋高亮顯示

package com.pinyougou.search.service.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; im

SSM+solr 通過商品搜尋學習solr的簡單使用

  學習了一下https://github.com/TyCoding/ssm-redis-solr這個github上的solr搜尋功能,現在來記錄一下。 我的理解就是solr有點類似於資料庫,但它是有索引的資料庫,按很多欄位建立索引,可能是b+樹或者雜湊索引,然後就能夠實現海量資料的查詢。sol

利用ztree實現搜尋

缺點:1、由於沒有查詢按鈕,我們只能通過compositionstart、compositionend事件來判斷使用者是否輸入完成,這有時會造成連續搜尋,致使網頁卡頓,即使我們設計了一定的延遲搜尋,也不能完全解決這個問題。

利用tkinter實現簡單計算器功能(不使用eval函式)

利用tkinter實現簡單計算器功能(不使用eval函式) 一、思路 tkinter: 佈置主介面; 上部為數字顯示介面; 下部為數字鍵與功能鍵介面; 邏輯: 程式只考慮兩個運算元進行計算的情況,不考慮複雜情況 展示:

利用過濾器實現免登陸功能版本1

1 實現免登陸的思想: 當用戶第一次登入的時候,如果使用者設定了儲存了密碼,就把使用者的資訊 set到cookie檔案裡面 第二次利用過濾器 檢視是否有相應的cookie檔案,如果有執行相應的操作(

python演算法與資料結構002--利用列表實現棧的功能

class Statck(object): """ 棧:後進先出的資料結構 利用列表實現棧的基本功能。 """ def __init__(self): self.items=[] def

Solr(全文搜尋功能)的介紹,安裝及配置

Solr(全文搜尋功能) Solr是什麼? Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優