solr 索引库的维护
1 复制IK-analyzer到你的服务器指定目录中。
2 在该目录中,我们需要的东西有:IKAnalyzer的jar包,IKAnalyzer.cfg.xml,mydict.dic和ext_stopword.dic
3 需要把这个jar包添加到solr工程中:
cd IKAnalyzer/
cp IKAnalyzer.jar /home/wangchao/solr/apache-tomcat-8.0.46/webapps/solr/WEB-INF/lib/
4 需要把扩展词典和停用词词典和配置文件复制到solr工程的classpath中:
cd /home/wangchao/solr/apache-tomcat-8.0.46/webapps/solr/WEB-INF
mkdir classes
cp IKAnalyzer.cfg.xml mydict.dic ext_stopword.dic /home/wangchao/solr/apache-tomcat-8.0.46/webapps/solr/WEB-INF/classes
5 注意扩展词典和停用词词典必须是UTF-8的,不能使用windows的记事本编辑。
6 配置FieldType,需要在solr_home/colection1/conf/schema.xml中配置,在最底部添加扩展的IKAnalyzer:
cd /home/wangchao/solr/solr_home/collection1/conf
vi schema.xml:
#specified ik analyzer
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
二、定义solr的业务字段,与你想要进行索引的字段进行绑定:
1 根据你的数据库情况,将你需要进行索引的字段绑定:
<field name="article_title" type="text_ik" indexed="true" stored="true" />
<field name="article_content" type="text_ik" indexed="true" stored="true" />
<field name="article_time" type="text_ik" indexed="true" stored="true" />
<field name="news_type" type="text_ik" indexed="true" stored="true" />
<field name="article_keywords" type="text_ik" indexed="true" stored="false" multiValued="true" />
<copyField source="article_title" dest="article_keywords"/>
<copyField source="article_content" dest="article_keywords"/>
<copyField source="article_time" dest="article_keywords"/>
<copyField source="news_type" dest="article_keywords"/>
注:部分schema.xml的关键词的意义,在另外一个文档中,名叫“solr的schema.xml配置文件关键词意义”。
2 重启tomcat
三、solr管理界面的使用:
1 重要的功能:
Documents:
可以添加相应的索引内容。
Query:
q:查询条件: *:* 表示查询所有域;article:xx 指定你想要查询的域(此处是article)。
fl:返回域, 默认所有域。
df:默认搜索域,可以指定为article_keywords。
hl.simple.pre和hl.simple.post:高亮域。
sort:排序域。
start,rows:开始指定行。
四、索引库的维护:
1 增加:
直接使用Documents新增。
2 修改:
没有update,只用新增一个相同ID的索引即可,原理是先删除,后新增。
3 删除两种方法:
1<delete>
<id>xxx</id>//指定索引的ID
</delete>
<commit/>
2根据查询删除:
<delete>
<query>*:*</query>//删除所有
</delete>
<commit/>
五、将数据库的内容与solr业务字段关联并且进行索引存储:
1 第一种方式:Dataimport
2 使用代码:
1Solrj客户端的使用:
1需要依赖solrj的jar包。
2进行简单测试,使用solrj添加文档:
public void addDocument() throws Exception{
String baseUrl="http://39.108.75.175:8082/solr";
SolrServer solrServer=new HttpSolrServer(baseUrl);
//创建一个文档对象
SolrInputDocument solrInputDocument=new SolrInputDocument();
solrInputDocument.addField("id","test001");
solrInputDocument.addField("article_title","新闻测试");
solrInputDocument.addField("article_content","新闻内容啊啊啊");
//把文档对象写入索引库
solrServer.add(solrInputDocument);
//提交
solrServer.commit();
}
3删除文档:
public void deleteDocument() throws Exception{
//创建连接
SolrServer solrServer=new HttpSolrServer();
//solrServer.deleteById("");//给定索引ID
solrServer.deleteByQuery("*:*");//通过查询删除
//提交
solrServer.commit();
}
2把新闻信息导入到索引库中:
1 使用java程序读取mysql数据库中的商品信息,然后创建solr文档对象,将这个商品信息写入索引库。
2 创建一个搜索的服务工程来发布服务:deepbreath-search:
3 具体业务逻辑根据需求来做
3 使用搜索引擎:
1 查询:
public void queryDocument() throws Exception{
//创建连接
SolrServer solrServer=new HttpSolrServer();
//设置查询条件
SolrQuery query=new SolrQuery();
query.setQuery("*:*");
//查询条件
query.setStart(20);
query.setRows(50);
//执行查询
QueryResponse response=solrServer.query(query);
SolrDocumentList list=response.getResults();
for(SolrDocument document:SolrDocumentList){
}
}
2 整合Dao:
3 整合Service:
1 查询的结果封装为一个pojo对象
2 查询的结果的SolrQuery应该有这些内容:分页、默认搜索域、高亮
solr 索引库的维护的更多相关文章
- 维护solr索引库
一 2)solrcore 一个solr下可以有多个solrcore,每个solrcore就是一个独立的索引库3)solrconfig.xml lib:配置solr的扩展包的位置,不指定路径 ...
- 使用solrj操作solr索引库
(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...
- 使用solrj操作solr索引库,solr是lucene服务器
客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...
- 将数据库的数据导入solr索引库中
在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例. 首先要准备jar包:solr-dataimporthandler-4.8.1.jar.solr-dataimport ...
- 如何在分布式环境中同步solr索引库和缓存信息
天气依旧很好,主要是凉快.老习惯,我在北京向各位问好. 搜索无处不在,相信各位每天都免不了与它的亲密接触,那么我想你确实有必要来了解一下它们,就上周在公司实现的一个小需求来给各位分享一下:如何在分布式 ...
- solr索引库的创建
solr索引库的创建 一.找到你安装的[solrhome]目录(我的是这个) 二.进入该目录 三.选择其中任意一个索引库复制一份到该目录下并更名为要创建的索引库名称 四.进入[myindex]目录下, ...
- 商城06——solr索引库搭建&solr搜索功能实现&图片显示问题解决
1. 课程计划 1.搜索工程的搭建 2.linux下solr服务的搭建 3.Solrj使用测试 4.把数据库中的数据导入索引库 5.搜索功能的实现 2. 搜索工程搭建 要实现搜索功能,需要搭建 ...
- 数据添加到solr索引库后前台如何搜索
主要结构: 查询 Dao: package com.taotao.search.dao.impl; import java.util.ArrayList; import java.util.List; ...
- Lucene之索引库的维护:添加,删除,修改
索引添加 Field域属性分类 添加文档的时候,我们文档当中包含多个域,那么域的类型是我们自定义的,上个案例使用的TextField域,那么这个域他会自动分词,然后存储 我们要根据数据类型和数据的用途 ...
随机推荐
- webapi权限常见错误
webapi权限常见错误 错误一: Response for preflight has invalid HTTP status code 405. 解决方案: 屏蔽配置文件中的如下代码 <!- ...
- JDK安装目录分析-两个jre和三个lib
安装JDK后,Java目录下有jdk和jre两个目录,但jdk下还有一个jre目录,而且这个jre比前面那个jre在bin目录下少了个server文件夹(Server端的Java虚拟机)!前一个jre ...
- mvn install 报错Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2 错误: 找不到符号
报错信息 在Eclipse中执行mvn install时,console端显示如下报错信息: [ERROR] Failed to execute goal org.apache.maven.plugi ...
- linux安装anaconda过程
今天在centos7下安装了Anaconda,将安装过程记录如下 下载安装Anaconda 下载地址:https://repo.continuum.io/archive/index.html 打开页面 ...
- codeforces|CF13C Sequence
大概的题意就是每次可以对一个数加一或者减一,然后用最小的代价使得原序列变成不下降的序列. 因为是最小的代价,所以到最后的序列中的每个数字肯定在原先的序列中出现过.(大家可以想一下到底是为什么,或者简单 ...
- “全栈2019”Java第六十一章:如何实现接口?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Servlet实现Cookie读写
前言 程序员老婆让程序员去外面买东西,说,老公,你出去买一笼包子吧,遇到卖西瓜的就买一个.老公高兴的出去了,一会儿带着一个包子回来了,老婆很是郁闷问,怎么只买了一个包子,程序员说:因为我看到卖西瓜的了 ...
- 1,Thread 概念以及Thread 的6个状态
Thread 有6个状态 , NEW, RUNNABLE , BLOCKED, WATTING, TIMED WAITING, TERMINATED 1.NEW至今尚未启动的线程的状态.2.RUNNA ...
- http错误状态码
http://www.kaiyuanba.cn/html/1/131/226/4258.htm 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:1xx:指示信息--表示请求已接收 ...
- 「美团 CodeM 复赛」城市网络
题目链接 题意分析 首先 \([u,v]\)在树上是一条深度递增的链 那么我们可以使用倍增找 \(x\)的祖先当中深度最大的值大于\(x\)的点 然后维护一个\(pre\) 重新建树 这样从\(x\) ...