11.solr学习速成之MoreLikeThis
Solr相似匹配
查询参数
public static void addIndex(){
HttpSolrClient server = solrServer.getServer();
List<ProductBO> list = new ArrayList<>();
ProductBO bo1 = new ProductBO();
bo1.setId("1001");
bo1.setTitle("海尔模卡 (MOOKA) 65K5 65寸安卓智能网络窄边框全高清LED液晶电视");
bo1.setMajor_s("家用电器");
bo1.setSubMajor_s("电视");
bo1.setBrand_s("海尔");
bo1.setModel_s("65K5");
bo1.setPrice_i(5400);
list.add(bo1);
bo1 = new ProductBO();
bo1.setId("1002");
bo1.setTitle("三星 (SANSUNG) UA55JU5900JXXZ 55英寸 4K超高清智能 LED液晶电视 黑色");
bo1.setMajor_s("家用电器");
bo1.setSubMajor_s("电视");
bo1.setModel_s("UA55JU5900");
bo1.setBrand_s("三星");
bo1.setPrice_i(6400);
list.add(bo1);
bo1 = new ProductBO();
bo1.setId("2001");
bo1.setTitle("格力(GREE) 大1匹 变频 Qbo 壁挂式冷暖空调 KFR-26GW/(26596)FNAa-A3");
bo1.setMajor_s("家用电器");
bo1.setSubMajor_s("空调");
bo1.setBrand_s("格力");
bo1.setModel_s("KFR-26GW/(26596)FNAa-A3");
bo1.setPrice_i(7700);
list.add(bo1);
bo1 = new ProductBO();
bo1.setId("2002");
bo1.setTitle("奥克斯(AUX) 正1.5匹 冷暖 定速 隐藏式显示屏 壁挂式 空调 KFR-35GW/HFJ+3");
bo1.setMajor_s("家用电器");
bo1.setSubMajor_s("空调");
bo1.setBrand_s("奥克斯");
bo1.setModel_s("KFR-35GW/HFJ+3");
bo1.setPrice_i(6600);
list.add(bo1);
bo1 = new ProductBO();
bo1.setId("2003");
bo1.setTitle("海尔(HAIER) 1.5匹 变频 静音空调 冷暖 壁挂式空调 KFR-35GW/01JDA23A");
bo1.setMajor_s("家用电器");
bo1.setSubMajor_s("空调");
bo1.setBrand_s("海尔");
bo1.setModel_s("KFR-35GW/01JDA23A");
bo1.setPrice_i(9600);
list.add(bo1);
try {
server.addBeans(list);
server.commit();
} catch (SolrServerException | IOException e) {
e.printStackTrace();
}
}
package morelikethis;
import java.io.Serializable;
import org.apache.solr.client.solrj.beans.Field;
public class ProductBO implements Serializable{
private static final long serialVersionUID = 1L;
@Field
private String id;
@Field
private String title;
@Field
private String major_s;
@Field
private String subMajor_s;
@Field
private String brand_s;
@Field
private int price_i; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
} public String getMajor_s() {
return major_s;
}
public void setMajor_s(String major_s) {
this.major_s = major_s;
}
public String getSubMajor_s() {
return subMajor_s;
}
public void setSubMajor_s(String subMajor_s) {
this.subMajor_s = subMajor_s;
}
public String getBrand_s() {
return brand_s;
}
public void setBrand_s(String brand_s) {
this.brand_s = brand_s;
}
public int getPrice_i() {
return price_i;
}
public void setPrice_i(int price_i) {
this.price_i = price_i;
}
}
package morelikethis;
import java.util.ArrayList;
import java.util.List;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.util.SimpleOrderedMap;
import solr.solrServer;
public class SolrMlt {
@SuppressWarnings("unchecked")
public static void search(){
HttpSolrClient server = solrServer.getServer();
SolrQuery query = new SolrQuery();
List<ProductBO> articles = new ArrayList<ProductBO>();
query.setQuery("id:1001")
.setParam("fl", "id,title,brand_s")//返回的字段
.setParam("mlt", "true")//打开组建
.setParam("mlt.fl", "title")//用于判断相似的字段
.setParam("mlt.mindf", "1")//过滤文档数小于1的文档集合
.setParam("mlt.mintf","1")//过滤单个文档中关键字小于1的文档
.setParam("mlt.count", "10");
QueryResponse queryResponse;
try {
queryResponse = server.query(query);
SimpleOrderedMap<SolrDocumentList> mltResults = (SimpleOrderedMap<SolrDocumentList>) queryResponse.getResponse().get("moreLikeThis");
for(int i=0;i<mltResults.size();i++){
SolrDocumentList items = mltResults.getVal(i);
for (SolrDocument doc : items) {
String id = doc.getFieldValue("id").toString();
if(id.equals("1001")){
continue;//排除自身
}
System.out.println(doc.getFieldValue("title").toString());
}
} } catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
search();
}
}
11.solr学习速成之MoreLikeThis的更多相关文章
- 1.solr学习速成之配置文件
什么是solr Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过H ...
- 2.solr学习速成之安装
1.下载解压solr-5.3.1.tgz [root@205 opt]# tar -zxf solr-5.3.1.tgz -C /opt/module/ 2.将solr-5.3.1/server/so ...
- 13.solr学习速成之IK分词器
IKAnalyzer简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包. IKAnalyzer特性 a. 算法采用“正向迭代最细粒度切分算法”,支持细粒度和最大词长两 ...
- 12.solr学习速成之dataimport
solr除了利用solrj建立索引外,还可以由列式数据库hbase触发器添加索引,自动全量或者增量索引关系数据库数据等. dataimport可以配置从任何关系数据库导入索引 1.将jar包拷贝到to ...
- 10.solr学习速成之高亮显示
Solr高亮显示的三种实现 高亮显示在搜索中使用的比较多,比较常用的有三种使用方式,如果要对某field做高亮显示,必须对该field设置stored=true . 第一种是普通的高 ...
- 9.solr学习速成之group
Group与Facet的区别 facet的查询结果主要是分组信息:有什么分组,每个分组包括多少记录:但是分组中有哪些数据是不可知道的,只有进一步搜索. group则类似于关系数据库的g ...
- 8.solr学习速成之FacetPivot
什么是Facet.pivot Facet.pivot就是按照多个维度进行分组查询,是Facet的加强,在实际运用中经常用到,一个典型的例子就是商品目录树 NamedList解释: NamedList ...
- 7.solr学习速成之facet
Facet 介绍 Facet 是 solr 的高级搜索功能之一 ,可以给用户提供更友好的搜索体验,在搜索关键字的同时 , 能够按照 Facet 的字段进行分组并统计. 比如你上淘宝, ...
- 6.solr学习速成之multicore查询
查询关联多个core 再新建一个core 向每个core添加索引,修改 final static String SOLR_URL = "http://localhost:8080/solr/ ...
随机推荐
- iOS日期加一个月的方法
NSCalendar *calender2 = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian] ...
- Google内部培训过1.8万人的机器学习速成课
什么是(监督)机器学习?简而言之,它是以下几点: ML系统学习如何组合输入以产生对从未见过的数据的有用预测. 我们来探讨基本的机器学习术语. 标签 一个标签是我们预测物品的属性,比如变量y在简单线性回 ...
- UNIX 环境高级编程 文件和目录
函数stat , fstat , fstatat , lstat stat函数返回与此文件有关的信息结构. fstat函数使用已打开的文件描述符(而stat则使用文件名) fstatat函数 为一个相 ...
- [svn]显示日志很慢 点击文件查看更改记录也贼慢
特此记录,防止以后忘记. 解决办法: 在 C:\Windows\System32\drivers\etc (win7) 中加入 即可 亦或将代码的url中pc名字改为ip地址也可以解决问题 对文件夹点 ...
- 类中的__slots__方法与__dict__方法相排斥
类的 __slots__ 列表 作用: 限定一个类创建的实例只能有固定的属性(实例变量) 不允许对象添加列表以外的属性(实例变量) 防止用户因错写属性的名称而发生程序错误 说明: 1. __slots ...
- [Python编程实战] 第一章 python的创建型设计模式1.1抽象工厂模式
注:关乎对象的创建方式的设计模式就是“创建型设计模式”(creational design pattern) 1.1 抽象工厂模式 “抽象工厂模式”(Abstract Factory Pattern) ...
- LOJ2321. 「清华集训 2017」无限之环【费用流】
LINK 很好的一道网络里题 首先想插头DP的还是出门左转10分代码吧 然后考虑怎么网络流 首先要保证没有漏水 也就是说每个接口一定要有对应的接口 那么发现每个点只有可能和上下左右四个点产生联通关系 ...
- BZOJ3730 震波 【动态点分治】*
BZOJ3730 震波 Description 在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i]. 不幸的是,这片土 ...
- 读取JSON文件并 排序,分组,
读取.json文件 public string GetFileJson(string filepath) { string json = string.Empty; using (FileStream ...
- mock的使用二(根据数据模板生成模拟数据)
Mock.mock( rurl?, rtype?, template|function( options ) ) 根据数据模板生成模拟数据. Mock.mock( template ) 根据数据模板生 ...