电商项目(十七) -- 搜索商品
程序员文章站
2022-04-15 10:46:09
...
1. solr中配置业务字段
修改 solr 的 schema.xml 文件,在文件中添加如下内容:
<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_keywo rds" 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"/>
2. 创建搜索服务frontent_search(处理搜索商品内容的)
添加依赖
<?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>bz_parent</artifactId>
<groupId>com.bjsxt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>frontend_search</artifactId>
<dependencies>
<!--mapper-->
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>common_mapper</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--utils-->
<dependency>
<groupId>com.bjsxt</groupId>
<artifactId>common_utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--Spring Boot Web Starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring Cloud Eureka Client Starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--Spring Boot Data Solr Starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
<!--Spring Cloud Config Client Starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--Spring Cloud AMQP: (RabbitMQ) Starter-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
创建启动类
创建配置文件
配置SolrTemplate
创建配置类:SolrConfig
3. 在关系型数据库中查询数据
在配置文件中添加eureka的配置信息
编写SQL语句
创建SortItem实体类
在pojo的模块中,创建SortItem类,实现序列化接口
添加SortItemMapper接口类和SortItemMapper.xml
4. 在frontent_search添加数据导入接口
创建SolrController,新增方法:向solr索引库中导入数据,返回值:Result,方法的参数:无。
创建对应的业务层代码,实现方法:向solr索引库中导入数据的方法,先查询数据:返回值是List;将数据添加到索引库:先创建SoltInputDocument对象,设置solr配置文件中的属性,在写入索引库,提交数据即可完成。
导入数据:
5. 在frontent_search添加搜索接口
在工具类的模块中添加返回数据的实体类SolrDocument
修改controller
在SolrController中新增方法:搜索数据,返回值是List,方法的参数:String q ,@RequestParam(defaultValue=“1”)Long page,@RequestParam(defaultVaue=“10”)Integer pageSize