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/ ...
随机推荐
- Redis的集群安装以及rehash重新迁移教程指南
1. Redis的cluster集群 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生存的看家本领,增加集群 ...
- Java property 的加载读取
方法一 Properties properties = new Properties(); InputStream stream = PropertiesUtil.class.getClassLoad ...
- runtime查找 UIAlertAction 的key 及 UIActionSheet 设置字体颜色
修改不了颜色了 结果发现kvo 的key 不对 哎 直接上代码 设置正确的属性找到对应的key 还以为iOS 11改变了方法 unsigned int count; Ivar *ivars = c ...
- 关于python的包
参考文献:http://blog.sina.com.cn/s/blog_615c388d01017b5o.html 注:本文大多对上连接的整理,仅用于学习,望博主见谅.转载请附上上述链接. 为什么要包 ...
- nginx在使用proxy_pass的情况下开启error_page
error_page用于指定特定错误发生时要显示的url,但是如果请求经proxy_pass处理后,如何使error_page对upstream产生的错误进行处理呢? 方法很简单. 保持之前的erro ...
- 用eclipse打包可执行的jar(含第三方jar包)
在eclipse中的解决方式如下: 在工程目录下(与src同层)建立lib目录,将第三方Jar包放到这个目录里(copy,paste即可)[如果直接引用本地的jar,一旦换电脑就呵呵了...] 右击工 ...
- 使用python处理selenium中的获取元素属性问题
# 获取我的订单元素class属性值 at = self.driver.find_element_by_link_text('我的订单').get_attribute('class') # 判断cla ...
- Byte.parseByte(String s,int radix)的解释
1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下 ...
- 将美化进行到底,把 PowerShell 做成 oh-my-zsh 的样子
不知你有没有看过 Linux 上 oh-my-zsh 的样子?看过之后你一定会惊叹,原来命令行还能这么玩!然而 Windows 下能这么玩吗?答案是可行的,接下来就来看看怎么玩. Windows 下我 ...
- SQL夯实基础(九)MySQL联接查询算法
书接上文<SQL夯实基础(八):联接运算符算法归类>. 这里先解释下EXPLAIN 结果中,第一行出现的表就是驱动表(Important!). 对驱动表可以直接排序,对非驱动表(的字段排序 ...