Los programadores de Java que hay que ver: Solr PPC vip

características

En este artículo se utilizará Solr vip clasificación completa, aquí no es simplemente ordenados por nivel de VIP. Pero cuando se utiliza Solr condiciones de consulta (sin utilizar la clase) satisfaga las condiciones y tienen un nivel vip datos que aparecen en el frente, esta vez vamos a utilizar un mecanismo de puntuación personalizada correspondientes presentada a Solr completa.

Introducción Entorno

Entorno de desarrollo : IDEA + SpringBoot  S entorno OLR : solr4.10 + tomcat7

+ IK + Tomcat palabra china configuración de auto-instalación Solr entorno ambiental: Nota

preparativos

Instalación de Medio Ambiente Solr + IK + Tomcat configuración del entorno de palabra (auto finalización) Verificar Solr medio ambiente:

Compruebe la palabra IK chino, una palabra china tiene los siguientes efectos pueden ser

Añadir los siguientes dominios de negocio en el Ámbito de recogida schema.xml directorio de Solr servicio que contiene en ella: el título de los productos básicos, el tiempo de creación, el número de clics mercancías, materias primas propiedad nivel de negocios VIP, revisiones de productos descripción del producto, precio del producto, de productos.

<!-- general -->
<!-- 商品标题 -->
<field name="t_title" type="text_ik" indexed="true" stored="true" />
<!-- 商品介绍 -->
<field name="t_intr" type="text_ik" indexed="true" stored="true" />
<!-- 商品价格 -->
<field name="t_price" type="float" indexed="true" stored="true" />
<!-- 商品创建时间 -->
<field name="t_createTime" type="tdate" indexed="true" stored="true" />
<!-- 商品点击次数-->
<field name="t_point" type="long" indexed="true" stored="true" />
<!-- 商品所属商家vip等级[1-5级] -->
<field name="t_vip" type="long" indexed="true" stored="true" />
<!-- 商品评价-->
<field name="t_assess" type="long" indexed="true" stored="true" />

<!-- 设置关键字搜索域-->
<field name="t_searchText" type="text_ik" indexed="true" stored="false" multiValued="true" />

<!-- 设置关键字域复制标题和介绍 -->
<copyField source="t_title" dest="t_searchText" />
<copyField source="t_intr" dest="t_searchText" />
<!-- 将关键字搜索域设置默认搜索域-->
<defaultSearchField>t_searchText</defaultSearchField>

<solrQueryParser defaultOperator="AND"/>

estructuras de ingeniería

proyecto IDEA construido usando Maven

Añadir la siguiente dependencia frasco en pom.xml

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
</dependency>
</dependencies>

SpringBoot empezar a escribir la clase SpringbootSolr5Application.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootSolr5Application {

public static void main(String[] args) { SpringApplication.run(SpringbootSolr5Application.class, args);
}
}

Application.properties creados en el directorio de recursos se añade a los contenidos:

spring.data.solr.host=//localhost:8080/solr/

Escribir datos de consulta de inicialización CustomSortTest.java:

@RunWith(SpringRunner.class) @SpringBootTest
public class CustomSortTest {
@Autowired
private SolrClient client;
/**
* 初始化solr索引数据
* */ @Test
public void initSolrData() throws Exception{
List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); for(int i=0;i<100;i++){
SolrInputDocument document = new SolrInputDocument();
// 文 档 id document.setField("id",i);
//商品标题
document.setField("t_title","new"+i+"- 三星 W"+i*100+" 黑色 电信3G手机 双卡双待双通");
//商品介绍
document.setField("t_intr","下单送12000毫安移动电源!双3.5英寸魔焕炫屏,以非凡视野纵观天    下时局,尊崇翻盖设计,张弛中,尽显从容气度!");
//价格
document.setField("t_price","8000");
//创建日期
document.setField("t_createTime",new Date());
//点击率document.setField("t_point",i%9+9);
//评价分数
document.setField("t_assess",i%11+5);
//vip 等 级 [1-5] document.setField("t_vip",i%5); docs.add(document);
}
client.add(docs); client.commit();
}
}

Al escribir sobre las formas de mirar la consulta de fábrica: Samsung efectos:

@Test
public void defualtQuerySort() throws Exception{ SolrQuery solrQuery = new SolrQuery();
//关键词
solrQuery.set("q","t_searchText:*三星*");
//分页,0开始,每页10条,setStart设置的就是显示第几页
solrQuery.setStart(0); solrQuery.setRows(10);
//执行查询
QueryResponse response = client.query(solrQuery);
//文档结果集
SolrDocumentList results = response.getResults(); System.out.println("查询到的总条数:"+ results.getNumFound());
//遍历查询的结果
for (SolrDocument solrDocument : results) {
String id = solrDocument.get("id").toString();
String title = solrDocument.get("t_title").toString(); String assess = solrDocument.get("t_assess").toString();
double point = Double.valueOf(solrDocument.get("t_point").toString()); double vip = Double.valueOf(solrDocument.get("t_vip").toString());
System.out.println("id:"+id+" 标题:"+title+" 评价:"+assess+ "点击率:"+point+" vip等
级 :"+vip+" " );
}
}

Los resultados son como sigue:

Queried Total: 100

id: 0 Título: W0 new0- negro Samsung 3G calificación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles: 5 Hits: Valoración 9,0 vip: 0,0 
lo anterior Identificación del mencionado: 1 Denominación: new1- negro de telecomunicaciones móviles Samsung W100 3G de la tarjeta dual de doble Evaluación doble paso : 6 hits: 10,0 VIP Puntuación: 1,0 
lo anterior Identificación del mencionado: new2- negro Samsung W200 3G Puntuación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles:: 2 título 7 resultados: 11,0 VIP Puntuación: 2,0 
lo anterior Identificación del mencionado: 3 título: new3- Samsung W300 negro 3G de telecomunicaciones móviles de doble tarjeta de doble modo de espera calificación de paso doble: 8 hits: Valoración 12,0 VIP: 3.0 
lo anterior Identificación del mencionado: new4- de calificación de paso dual negro Samsung W400 3G de telecomunicaciones móviles de doble tarjeta de doble modo de espera:: 4 Denominación 9 resultados: Puntuación del 13,0 VIP: 4.0
id: 5 Denominación: new5- negro Samsung W500 3G calificación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles: 10 hits: Valoración 14,0 vip: 0.0 
lo anterior Identificación del mencionado: 6 Denominación: new6- negro de telecomunicaciones móviles Samsung W600 3G de la tarjeta dual de doble evaluación doble paso : 11 hits: 15,0 VIP Puntuación: 1,0
lo anterior Identificación del mencionado: new7- negro Samsung W700 3G Puntuación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles:: 7 título 12 resultados: Valoración del 16,0 vip: 2.0 
los anteriormente Identificación mencionarse: 8 título: new8- negro Samsung W800 3G de telecomunicaciones móviles dual de la tarjeta dual de doble calificación de paso: 13 hits: 17.0 calificación VIP: 3.0 
lo anterior mencionado Identificación: 9 Denominación: new9- Samsung W90 0 Negro de telecomunicaciones móviles 3G calificación de paso dual doble modo de espera dual de la tarjeta: 14 Hits: Valoración 9,0 vip: 4.0
id: 10 Título: negro new10- Samsung W1000 3G de telecomunicaciones móviles dual de la tarjeta dual de doble calificación de paso: 15 Correspondencias: Valoración 10,0 vip: 0.0

A partir de los resultados de la clasificación por omisión es el ID ordenada.

Terminado de personalizar su puntuación, mientras que la clasificación vip en el orden predeterminado como condición para Samsung

@Test
public void testVipPageQuery()throws Exception{ SolrQuery solrQuery = new SolrQuery();
//关键词
solrQuery.set("q","t_searchText:*三星*");
//分页,0开始,每页20条,setStart设置的就是显示第几页
solrQuery.setStart(0); solrQuery.setRows(20);
//设置权重方式为edismax
solrQuery.set("defType","edismax");
//scoreMethod为自定义评分规则,这里就是以t_vip+0的和来得到评分,然后以该评分进行排序String scoreMethod = "sum(t_vip,0)";
solrQuery.set("bf", scoreMethod);
//执行查询
QueryResponse response = client.query(solrQuery);
//文档结果集
SolrDocumentList results = response.getResults(); System.out.println("查询到的总条数:"+ results.getNumFound());
//遍历查询的结果
for (SolrDocument solrDocument : results) {
String id = solrDocument.get("id").toString();
String title = solrDocument.get("t_title").toString(); String assess = solrDocument.get("t_assess").toString(); String point = solrDocument.get("t_point").toString(); String vip = solrDocument.get("t_vip").toString();
//double point = Double.valueOf(solrDocument.get("t_point").toString());
//double vip = Double.valueOf(solrDocument.get("t_vip").toString());
System.out.println("id:"+id+" 标题:"+title+" 评价:"+assess+ "点击率:"+point+" vip等级 :"+vip+" " );
}
}

Los resultados son como sigue:

El número total de consultas a: 100
lo anterior Identificación del mencionado: 4 Título: new4- negro de telecomunicaciones móviles Samsung W400 3G dual de la tarjeta dual de doble paso Samsung Calificación: 9 Hits: calificación 13 vip: 4
lo anterior Identificación del mencionado: 9 Título: new9- telecomunicaciones Samsung W900 Negro 3G de telefonía móvil de doble tarjeta de doble modo de espera calificación de paso doble: 14 hits: Notas de 9 VIP: 4
lo anterior Identificación del mencionado: new14- negro Samsung W1400 3G de telecomunicaciones móviles dual de la tarjeta dual de doble pase Samsung Categoría:: 14 título 8 resultados: Reconocimiento 14 VIP: 4 
id: 19 título: new19- negro Samsung W1900 3G calificación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles: 13 hits: 10 Valoración: vip 4 id: 24 título: new24- negro Samsung W2400 3G de telecomunicaciones móviles dual de la tarjeta dual de doble paso Samsung Puntuación: 7 hits: 15 Puntuación vip: 4
lo anterior Identificación del mencionado: new29- negro Samsung W2900 3G calificación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles:: 29 título 12 hits: 11 VIP Puntuación: 4 
lo anterior Identificación del mencionado: 34 título: new34- Samsung W3400 negro 3G de telecomunicaciones móviles dual de la tarjeta dual de doble pase calificación Samsung: 6 hits: calificación 16 VIP: 4 
lo anterior Identificación del mencionado: new39- negro Samsung W3900 3G calificación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles:: 39 título 11 hits: 12 Puntuación vip : 4
lo anterior mencionado ID: 44 título: new44- negro Samsung W4400 3G de telecomunicaciones móviles dual de la tarjeta dual de doble paso Samsung Valoración: 5 golpes calificación vip 17: 4 
id: 49 Título: new49- negro Samsung W4900 3G calificación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles: 10 Hits: 13 Rating: vip 4 id: 54 Título: new54- negro Samsung W5400 3G de telecomunicaciones móviles dual de la tarjeta dual de doble paso Samsung Puntuación: 15 hits: Puntuación 9 vip: 4 
lo anterior Identificación del mencionado: new59- negro Samsung W5900 3G Puntuación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles:: 59 título 9 accesos: 14 VIP Puntuación: 4
lo anterior Identificación del mencionado: 64 título: new64- Samsung W6400 negro 3G de telecomunicaciones móviles dual de la tarjeta dual de doble pase calificación Samsung: 14 hits: Notas de 10 VIP: 4 
lo anterior Identificación del mencionado: new69- negro Samsung W6900 3G calificación de paso dual doble modo de espera dual de la tarjeta de telecomunicaciones móviles:: 69 título 8 hits: 15 Puntuación vip : 4
lo anterior Identificación del mencionado: new74- negro Samsung W7400 3G de telecomunicaciones móviles dual de la tarjeta dual de doble pase calificación Samsung:: 74 título 13 hits: Notas de 11 VIP: 4 
lo anterior Identificación del mencionado: 79 título: new79- negro de telecomunicaciones móviles Samsung W7900 3G de la tarjeta dual de doble calificación de doble paso: 7 hits: calificación 16 VIP: 4
lo anterior Identificación del mencionado: new84- negro de telecomunicaciones móviles Samsung W8400 3G dual de la tarjeta dual de doble pase Samsung puntuación:: 84 título 12 hits: 12 Puntuación vip: 4
lo anterior Identificación del mencionado: 89 título: new89 - Samsung W8900 negro de telecomunicaciones móviles 3G dual de la tarjeta dual de doble calificación de paso: 6 hits: 17 vip calificación: 4
lo anterior mencionado ID: 94 estándar Título: new94- negro Samsung W9400 3G de telecomunicaciones móviles dual de la tarjeta dual de doble pase Samsung Calificación: 11 Hits: calificación 13 vip: 4 
lo anterior Identificación del mencionado: new99- negro Samsung W9900 3G de telecomunicaciones móviles de doble tarjeta de doble modo de espera calificación de paso doble:: 99 Título 5 hits: 9 de calificación VIP: 4

Podemos ver una forma de personalizar el marcador, el resultado sería la más alta clasificación vip

Nota: Para obtener más Solr

Se clasifican utilizando Solr costumbre de la función de consulta de funciones. Puede ver Solr API de autoaprendizaje

Publicado 682 artículos originales · ganado elogios 1391 · Vistas 1.71 millones +

Supongo que te gusta

Origin blog.csdn.net/itcast_cn/article/details/104770048
Recomendado
Clasificación