【solr】java整合solr5.0之solrj的使用
1、首先导入solrj需要的的架包
2、需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schema.xml配置一下我们的分词器
这里的msg_all还需要在schema.xml中配置
它的主要作用是将msg_title,msg_content两个域的值拷贝到msg_all域中,我们在搜索的时候可以只搜索这个msg_all域就可以了,
solr默认搜索需要带上域,比如
solr更改默认搜索域的地方也在schema.xml,它默认是搜索text域的,但是5.0之后不在这里配置默认搜索域了,它的文档也告诉我们,在solrconfig.xml中配置
在solrconfig.xml中配置默认搜素域,这样我们就可以按照我们自己的域进行搜索了
配置好以上,就可以使用代码进行CURD
private final static String URL="http://localhost:8080/solr/java";
public SolrClient server=null; @Before
public void init() throws Exception{
server=new HttpSolrClient(URL);
}
删除所有分词
//删除所有分词
@Test
public void testDel() throws Exception{
server.deleteByQuery("*:*");
server.commit();//先删除 基于query的删除 会删除所有建立的索引文件
}
增加分词
@Test
public void testAdd() throws Exception{
SolrInputDocument doc=new SolrInputDocument();
doc.addField("id", "3");
doc.addField("msg_title", "新浪微博");
doc.addField("msg_content", "我有一个微博帐号名字叫做什么呢?");
server.add(doc);
server.commit();
}
基于Bean增加分词
@Test
public void test03() throws Exception{
List<Message> msgs=new ArrayList<Message>();
msgs.add(new Message("4", "第四个测试solr测试文件", new String[]{"中华人民共和国万岁","中华上下五千年那年"}));
msgs.add(new Message("5", "第5个好朋友是什么意思呢?", new String[]{"上海是个好地方","歌唱我们亲爱的祖国曾经走过千山万水"}));
server.addBeans(msgs);
server.commit();
}
查询结果
@Test
public void test04() throws Exception{
//定义查询内容 * 代表查询所有 这个是基于结果集
SolrQuery query = new SolrQuery("solr");
query.setStart(0);//起始页
query.setRows(3);//每页显示数量
QueryResponse rsp = server.query( query );
SolrDocumentList results = rsp.getResults();
System.out.println(results.getNumFound());//查询总条数
for(SolrDocument doc:results){
System.out.println(doc);
}
}
将查询结果集封装为对象Bean
@Test
public void test05() throws Exception{
SolrQuery query = new SolrQuery("中华");// * 号 是查询 所有的数据
QueryResponse rsp = server.query( query );
List<Message> beans = rsp.getBeans(Message.class);//这个不能获取查询的总数了 也不能高亮
for(Message message:beans){
System.out.println(message.toString());
}
}
将结果集高亮显示
@Test
public void test06() throws Exception{
//定义查询内容 * 代表查询所有 这个是基于结果集
SolrQuery query = new SolrQuery("solr");
query.setStart(0);//起始页
query.setRows(5);//每页显示数量
query.setParam("hl.fl", "msg_title,msg_content");//设置哪些字段域会高亮显示
query.setHighlight(true).setHighlightSimplePre("<span class='hight'>")
.setHighlightSimplePost("</span>"); QueryResponse rsp = server.query( query );
SolrDocumentList results = rsp.getResults();
System.out.println(results.getNumFound());//查询总条数
for(SolrDocument doc:results){
String id = (String) doc.getFieldValue("id"); //id is the uniqueKey field
if(rsp.getHighlighting().get(id)!=null){
//高亮必须要求存储 不存储的话 没法添加高亮
System.out.println(rsp.getHighlighting().get(id).get("msg_title"));
}
}
}
ok,solr的基本使用就完成了
【solr】java整合solr5.0之solrj的使用的更多相关文章
- 【solr】solr5.0整合中文分词器
1.solr自带的分词器远远满足不了中文分词的需求,经查使用最多的分词器是solr是mmseg4j分词器,具体整合大家可以参考 https://github.com/zhuomingliang/mms ...
- solr 搭建 (基于solr-5.0.0)
1)去官网下载solr 2)去官网下载Tomcat 3)在D盘建一个文件夹(我在此建立了一个文件夹(命名为:sorl_lf)) 4)解压Tomcat(如果已经安装了Tomcat,请配置支持多个Tomc ...
- (五)solr7.1.0之solrJ的使用
(五)solr7.1.0之solrJ的使用 下面是solr7的官网API介绍: 网页翻译的不是很准确,只能了解个大概,基本能获取如下信息: 一.构建和运行SolrJ应用程序 对于用Maven构建的项目 ...
- solr7.4.0+mysql+solrj(简而优美)
目录: 1 solr7部署+创建核心2 solr mysql 连接 2.1 导入相关 jar包 2.2 配置连接信息 2.3 配置中文分析器3 solrj JAVA客户端应用 3.1 solrj 构建 ...
- 关于Solr6.0中solrj使用简单例子
solr6.0的solrJ接口有部分变化,下面列出了简单的使用实例,有需要的朋友可以参考下. package com.ailk.solr6; import java.io.IOException; i ...
- 全文检索引擎Solr系列——整合中文分词组件mmseg4j
默认Solr提供的分词组件对中文的支持是不友好的,比如:“VIM比作是编辑器之神”这个句子在索引的的时候,选择FieldType为”text_general”作为分词依据时,分词效果是: 它把每一个词 ...
- linux下solr5.0.0环境搭建
1解压 linux下解压命令 tar -zxvf solr-5.0.0.tgz 2启动 linux 系统 直接切换solr-5.0.0\bin 文件夹 执行 solr star -p 8983 (如果 ...
- FastDFS搭建及java整合代码【转】
FastDFS软件介绍 1.什么是FastDFS FastDFS是用C语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高 ...
- Solr5.0配置中文分词包
Solr中默认的中文分词是用Lucene的一元分词包. 现在说明在Solr5.0中配置Lucene的SmartCN中文分词包. 1,进入Solr的安装目录,我这里是:/root/nutch/solr- ...
随机推荐
- 在eclipse中导入weka(小白在路上)
第一步:新建一个java工程,new->javaproject,假设工程名为wekatest 第二步:导入weka.jar 第三步:src关联 导入后有许多的.class文件,直接双击打开是看不 ...
- JavaWeb基础: ServletConfig
基本概念 ServletConfig用于配置Servlet的参数:在Servlet的配置文件中,可以使用一个或者是多个<init-param> 标签为Servlet配置一些初始化参数.当有 ...
- iOS基础篇(十三)——UITableView(一)重用机制
UITableView是app开发中常用到的控件,功能很强大,常用于数据的显示.在学习UITableView使用之前,我们先简单了解一下: 1.UITableView的重用机制 UITableView ...
- js中的cookie操作
一.js cookie 使用时把此段代码引入页面 (function (factory) { if (typeof define === 'function' && define. ...
- StringUtils工具类的常用方法
StringUtils 方法的操作对象是 java.lang.String 类型的对象,是对 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String ...
- HTTP 错误 500.23 - Internal Server Error 解决方法
分析原因:在安装完成后IIS已经支持ASP和ASP.NET 2.0,需要注意的是.NET站点的应用程序池应选用Classic .NET AppPool,而不能用默认的DefaultAppPool,否则 ...
- Appcan跨域交互
案例1,sina微博登录,没有插件,因此采用web方式,我首先打开https://api.weibo.com/oauth2/authorize--,然后我想增加 一个取消按钮: 1 首先打开sina ...
- ubuntu 13.04 tftp服务器建立
本文参考博文:http://blog.chinaunix.net/uid-20718037-id-3194493.html 用tftp下载就需要要我们的主机上先安装tftp服务器. 1.安装软件 ...
- MVC记录
MVC这三层分别要完成哪些工作呢? 1.M层 模型(更多的是数据库模型) (1)创建数据库.创建相应的表 (2)完成针对数据库各个表的增.删.改.查的操作类 (3)映射数据库各个表的实体类(这个实体类 ...
- C#获取字符首字母
///<summary> /// 获取字符首字母 /// </summary> public static string GetPyChar(string c) { if (s ...