热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javasolr开发_详解java整合solr5.0之solrj的使用

1、首先导入solrj需要的的架包2、需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了&#x

1、首先导入solrj需要的的架包

7a17115e4c02c3ee261734d6ed347bfe.png

2、需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schema.xml配置一下我们的分词器

8b48e63176e5f7d5fbd59e491c4b8b1d.png

这里的msg_all还需要在schema.xml中配置

cd5eeb611614236db1519602b4754a9f.png

它的主要作用是将msg_title,msg_content两个域的值拷贝到msg_all域中,我们在搜索的时候可以只搜索这个msg_all域就可以了,

solr默认搜索需要带上域,比如

c0cfd3253fdd205594daef0e01248cf1.png

solr更改默认搜索域的地方也在schema.xml,它默认是搜索text域的,但是5.0之后不在这里配置默认搜索域了,它的文档也告诉我们,在solrconfig.xml中配置

bc408eb891df193abe2f1a5a8c443fc2.png

在solrconfig.xml中配置默认搜素域,这样我们就可以按照我们自己的域进行搜索了

45181e62684c881db501e7dfe7c97681.png

配置好以上,就可以使用代码进行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 msgs=new ArrayList();

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 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("")

.setHighlightSimplePost("");

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的基本使用就完成了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。



推荐阅读
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • springboot项目引入jquery浏览器报404错误的解决办法
    本文介绍了在springboot项目中引入jquery时,可能会出现浏览器报404错误的问题,并提供了解决办法。问题可能是由于将jquery.js文件复制粘贴到错误的目录导致的,解决办法是将文件复制粘贴到正确的目录下。如果问题仍然存在,可能是其他原因导致的。 ... [详细]
author-avatar
夏初如深秋123_929
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有