品優購專案記錄:day09
今日目標:
(1)完成solr環境安裝、中文解析器和業務域的配置
(2)會使用Spring Data Solr完成增刪改查操作
(3)完成批量資料匯入
(4)完成按關鍵字搜尋功能
(5)完成高亮顯示關鍵字的功能
(6)完成更新索引庫的功能
目錄
1、Solr環境搭建和配置
準備工作:安裝Solr的環境以及solrhome的基礎配置
1.1 在solrhome中的collction1下的conf目錄中開啟 schema.xml 配置業務域
<field name="item_goodsid" type="long" indexed="true" stored="true"/>
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="double" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category" type="string" indexed="true" stored="true" />
<field name="item_seller" type="text_ik" indexed="true" stored="true" />
<field name="item_brand" type="string" indexed="true" stored="true" />
1.2 在solrhome中的collction1下的conf目錄中開啟 schema.xml 配置複製域
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_category" dest="item_keywords"/>
<copyField source="item_seller" dest="item_keywords"/>
<copyField source="item_brand" dest="item_keywords"/>
1.3 在solrhome中的collction1下的conf目錄中開啟 schema.xml 配置動態域
<dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />
2、批量匯入資料到索引庫
說明:批量匯入資料到索引庫這一操作,一般只執行一次,所以我們不需要將其放入後臺系統中,我們單獨建立一個模組打成jar包,讓使用者可以通過命令列執行這一操作即可
準備工作:搭建單獨的模組,名稱:pinyougou-solr-util
2.1 匯入商品資料到索引庫
(1)匯入依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>pinyougou-parent</artifactId>
<groupId>com.pinyougou</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>pinyougou-solr-util</artifactId>
<dependencies>
<dependency>
<groupId>com.pinyougou</groupId>
<artifactId>pinyougou-dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<!--solr相關依賴 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>1.5.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
</dependencies>
</project>
(2)編寫配置檔案(applicationContext-service.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.pinyougou.solrutil"/>
</beans>
(3)編寫SolrUtil類,先進行資料查詢測試,然後再使用solr進行正式匯入
package com.pinyougou.solrutil;
import com.pinyougou.mapper.TbItemMapper;
import com.pinyougou.pojo.TbItem;
import com.pinyougou.pojo.TbItemExample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* Solr
* Author xushuai
* Description
*/
@Component
public class SolrUtil {
@Autowired
private TbItemMapper itemMapper;
public static void main(String[] args){
ApplicationContext ac =
new ClassPathXmlApplicationContext("classpath*:spring/applicationContext*.xml");
SolrUtil solrUtil = ac.getBean(SolrUtil.class);
// 執行匯入
solrUtil.importData();
}
/**
* 匯入商品資料到索引庫
*/
private void importData() {
// 構造查詢條件
TbItemExample example = new TbItemExample();
example.createCriteria().andStatusEqualTo(TbItem.STATUS_NORMAL);
// 執行查詢
List<TbItem> tbItems = itemMapper.selectByExample(example);
for (TbItem item : tbItems) {
System.out.println(item.getTitle());
}
}
}
(4)輸出
(5)修改pojo中的實體類TbItem,將對應業務域加到對應的屬性上,只注意加了@Field註解的欄位
@Field
private Long id;
@Field("item_title")
private String title;
private String sellPoint;
@Field("item_price")
private BigDecimal price;
private Integer stockCount;
private Integer num;
private String barcode;
@Field("item_image")
private String image;
private Long categoryid;
private String status;
private Date createTime;
private Date updateTime;
private String itemSn;
private BigDecimal costPirce;
private BigDecimal marketPrice;
private String isDefault;
@Field("item_goodsId")
private Long goodsId;
private String sellerId;
private String cartThumbnail;
@Field("item_category")
private String category;
@Field("item_brand")
private String brand;
private String spec;
@Field("item_seller")
private String seller;
注意:使用Field註解之前,需要在pojo的pom.xml中引入solr的依賴
(6)配置 Solr 配置檔案(applicationContext-solr.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:solr="http://www.springframework.org/schema/data/solr"
xsi:schemaLocation="http://www.springframework.org/schema/data/solr
http://www.springframework.org/schema/data/solr/spring-solr-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- solr伺服器地址 -->
<solr:solr-server id="solrServer" url="http://127.0.0.1:8080/solr" />
<!-- solr模板,使用solr模板可對索引庫進行CRUD的操作 -->
<bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
<constructor-arg ref="solrServer" />
</bean>
</beans>
(7)修改SolrUtil,注入SolrTemplate,然後修改importData方法,實現資料匯入Solr索引庫
(8)檢視索引庫
2.2 匯入規格資料到索引庫
(1)修改pojo工程中的item實體,新增一個屬性用於儲存動態域資訊,使用 @Dynamic表示為動態域
@Dynamic
@Field("item_spec_*")
private Map<String, String> specMap;
注意:必須加入泛型限定<String, String>,否則儲存時,會報錯,他在將資料替換到萬用字元上會出錯
(2)修改SolrUtil中的importData方法,使用spec轉換為Map集合,儲存到索引庫
3、搜尋服務工程搭建
3.1 搭建工程
匯入相關依賴,編寫相關配置檔案,參考content-interface和content-service,只需要注意匯入solr的配合檔案即可
3.2 服務層介面
(search-interface),新建ItemSearchService,並新增搜尋方法
package com.pinyougou.search.service;
import java.util.Map;
/**
* 搜尋服務層介面
* Author xushuai
* Description
*/
public interface ItemSearchService {
/**
* 搜尋
*
* @param searchMap 搜尋條件
* @return java.util.Map
*/
Map search(Map searchMap);
}
3.3 服務層實現(search-service)
新建ItemSearchServiceImpl,實現ItemSearchService
package com.pinyougou.search.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.pinyougou.pojo.TbItem;
import com.pinyougou.search.service.ItemSearchService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.solr.core.SolrTemplate;
import org.springframework.data.solr.core.query.Criteria;
import org.springframework.data.solr.core.query.Query;
import org.springframework.data.solr.core.query.SimpleQuery;
import org.springframework.data.solr.core.query.result.ScoredPage;
import java.util.HashMap;
import java.util.Map;
/**
* 搜尋服務實現
* Author xushuai
* Description
*/
@Service
public class ItemSearchServiceImpl implements ItemSearchService {
@Autowired
private SolrTemplate solrTemplate;
@Override
public Map search(Map searchMap) {
// 構造查詢條件
Query query = new SimpleQuery("*:*");
Criteria criteria = new Criteria("item_keywords");
criteria.is(searchMap.get("keywords"));
query.addCriteria(criteria);
// 執行查詢
ScoredPage<TbItem> pageInfo = solrTemplate.queryForPage(query, TbItem.class);
// 返回結果
Map resultMap = new HashMap();
resultMap.put("rows", pageInfo.getContent());
return resultMap;
}
}
4、搜尋控制層服務
4.1 搭建控制層工程
名稱為:pinyougou-search-web,引入相關依賴和相關配置檔案,還需要匯入相關靜態資源
4.2 在search-web中,新建ItemSearchController
package com.pinyougou.search.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.pinyougou.search.service.ItemSearchService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* 搜尋控制層
* Author xushuai
* Description
*/
@RestController
@RequestMapping("/itemsearch")
public class ItemSearchController {
@Reference
private ItemSearchService itemSearchService;
@RequestMapping("/search")
public Map search(@RequestBody Map searchMap) {
return itemSearchService.search(searchMap);
}
}
4.3 編寫searchService.js和searchController.js
(1)searchService.js
app.service('searchService',function ($http) {
// 搜尋
this.search = function (searchMap) {
return $http.post("itemsearch/search.do", searchMap);
}
});
(2)searchController.js
app.controller('searchController',function ($scope,searchService) {
$scope.search = function () {
searchService.search($scope.searchMap).success(
function (rtn) {
$scope.resultMap = rtn;
}
);
}
});
4.4 在頁面中引入相關js和基本的angular js指令
4.5 給所有框和搜尋按鈕繫結變數和單擊事件
4.6 迴圈遍歷查詢結果,展示搜尋結果
4.7 效果
相關推薦
品優購專案記錄:day09
今日目標: (1)完成solr環境安裝、中文解析器和業務域的配置 (2)會使用Spring Data Solr完成增刪改查操作 (3)完成批量資料匯入 (4)完成按關鍵字搜尋功能 (5)完成高亮顯示關鍵字的功能 (6)完成更新索引庫的功能 目錄
品優購專案記錄:day18
2018年08月01日 23:03:25 GodBbb 閱讀數:349更多 個人分類: 個人成長 實戰專案 品優購 微信支付 今日目標: (1)掌握二維碼生成外掛 qrious 的使用 (2)理解微信支付開發的整體思路 (3)呼叫微信支付介面(統一下單)生成支付二維碼 (4)
品優購專案記錄:day19
2018年08月19日 12:00:36 GodBbb 閱讀數:176更多 個人分類: 個人成長 實戰專案 品優購 今日目標: (1)理解秒殺實現思路 (2)實現秒殺頻道首頁功能 (3)實現秒殺商品詳細頁功能 (4)實現秒殺下單功能 (5)實現秒殺支付功能 目錄
品優購專案記錄:day17
今日目標: (1)掌握跨域請求CORS解決方案 (2)完成結算頁收貨人地址選擇功能 (3)完成結算頁支付方式選擇 (4)完成結算頁商品清單功能 (5)完成儲存訂單功能 目錄 3.2 前端
品優購專案記錄:day06
今日目標: (1)完成選擇商品分類 (2)完成品牌選擇功能 (3)完成擴充套件屬性錄入 (4)完成規格選擇功能 (5)完成SKU商品資訊功能 (6)完成是否啟用規格
品優購專案記錄:day13
今日目標: (1)理解訊息中介軟體、JMS等概念 (2)掌握JMS點對點與釋出訂閱模式的收發訊息 (3)掌握Spring JMS (4)完成商品稽核,匯入索引 (5)完成商品刪除,移除索引 (6)完成商品稽核生成商品詳細頁 (7)完成商品刪除,刪除詳細頁
品優購專案記錄:day04
今日目標: (1)實現 Spring Security 入門 Demo (2)完成運營商登入與安全控制功能 (3)完成商家入駐 (4)完成商家稽核 (5)完成商家系統登入與安全控制
品優購專案記錄:day12
今日目標: (1)掌握 Freemarker常用的指令與內建函式 (2)完成商品詳細頁的資料顯示 (3)完成商品詳細頁的動態顯示 (4)完成商品詳細頁讀取SKU資訊的業務邏輯 (5)完成商品稽核呼叫功能 目錄 1.1 配置
品優購專案記錄:day11
今日目標: (1)實現品優購價格區間篩選功能 (2)實現搜尋結果分頁功能 (3)理解多關鍵字搜尋 (4)實現搜尋結果排序功能 (5)實現隱藏品牌列表功能 (6)實現搜尋頁與首頁對接功能 (7)完成更新索引庫的功能 目錄 1.2 前端 1.3
品優購專案記錄:day01
今日目標: (1)瞭解電商行業特點以及理解電商的模式 (2)瞭解整體品優購的架構特點 (3)能夠運用Dubbox + SSM 搭建分散式應用 (4)搭建工程框架,完成品牌列表的後端程式碼 目
品優購專案記錄:day15
今日目標: (1)搭建單點登入服務端,開發單點登入客戶端 (2)實現CAS認證資料來源設定 (3)更換CAS登入頁面 (4)掌握CAS與Spring Security整合 (5)完成使用者中心單點登入功能 目錄 1、品優購使用者中
001 -- 品優購專案簡單介紹
品優購網上商城是一個綜合性的 B2B2C 平臺,類似京東商城、天貓商城。網站採用商家入駐的模式,商家入駐平臺提交申請,有平臺進行資質稽核,稽核通過後,商家擁有獨立的管理後臺錄入商品資訊。商品經過平臺稽核後即可釋出。 品優購網上商城主要分為網站前臺、運營商後臺、商家管理後臺三個子系統 1.1 網站前臺 主
品優購專案筆記day01——(SOA架構,Dubbox及小demo,Zookeeper,專案打包,管理中心linux環境部署與專案架構搭建)
此部落格是為了記錄業餘時間每一天課程的所學 1.什麼是SOA架構 SOA是Service-Oriented Architecture的首字母簡稱,它是一種支援面向服務的架構樣式。從服務、基於服務開發和服務的結果來看,面向服務是一種思考方式。其實SOA架構更多應用於網際網路專案開發。
品優購專案--購物車結算頁面
效果圖 HTML部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>品優購購物車結算</titl
品優購專案異常No qualifying bean of type [org.springframework.data.redis.core.RedisTemplate] found for depe
報錯 嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.sprin
使用idea實現品優購專案搭建
使用idea搭建maven專案工程詳細步驟: 建立pinyougou-parent父工程 點選File ->New->Module…,建立maven專案 點選Next 點選Next 點選Next ♦點選Finish,完成 新增pom
day01_品優購電商專案_01_走進電商 + 分散式框架-Dubbox + 品優購-框架搭建 + 逆向工程 + 品牌列表展示 + 常見錯誤_用心筆記
課程目標 目標1:瞭解電商行業特點以及理解電商的模式 目標2:瞭解整體品優購的架構特點 目標3:能夠運用Dubbox+SSM搭建分散式應用 目標4:搭建工程框架,完成品牌列表後端程式碼 1. 走進電商 1.1 電商行業分析 近年來,中國的電子商
Java之品優購部署_day01(3)
客戶端訪問 zoo.cfg process src 創建 png 51cto 一個 準備 2.2 搭建 Zookeeper 集群 2.2.1 搭建要求 真實的集群是需要部署在不同的服務器上的,但是在我們測試時同時啟動十幾個虛擬機內存會吃不消,所以我們通常會搭建偽集群,也就是
Java之品優購部署_day01(4)
領導者 bad address lower ava 正常 發生 str caf 2.1.1 啟動集群啟動集群就是分別啟動每個實例。啟動後我們查詢一下每個實例的運行狀態先查詢第一個服務 Mode 為 follower 表示是跟隨者(從)再查詢第二個服務 Mod 為 leade