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

和solr的N天N夜(一)--solr的安装、配置、添加core、后台功能介绍

一、使用背景几乎在每个项目中都会频繁使用搜索功能,并且数据量很大,如果仍然采用outofdate的SQL语句查询数据库的方式,个人觉得不仅会增加服务器的负担,也会觉得这种方式略显
一、使用背景
几乎在每个项目中都会频繁使用搜索功能,并且数据量很大,如果仍然采用out of date的SQL语句查询数据库的方式,个人觉得不仅会增加服务器的负担,也会觉得这种方式略显土气,跟不上IT屌丝们的滚滚潮流~OK,废话不多说,Let's move...
二、solr简介
Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
Solr可以独立运行,运行在Jetty、Tom猫等这些容器中,Solr索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档,Solr根据xml文档添加、删除、更新索引。Solr搜索只需发送HTTP POST请求,然后对Solr返回Xml、json等格式的查询结果进行解析,组织页面布局即可。
Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
三、运行环境
jdk:1.7.0_17
tomcat:7.0.22
solr:5.4.1
四、solr和tomcat集成
1、安装jdk、tomcat
2、解压solr
3、把D:\Java\solr-5.4.1\server\solr-webapp\webapp文件夹放到tomcat下webapp目录下。改名为solr。改名不是必须的,为了方便访问。

4、把D:\Java\solr-5.4.1\server\lib\ext目录下的所有的jar包添加到solr工程中。D:\Java\apache-tomcat-7.0.22\webapps\solr\WEB-INF\lib


5、创建一个solrhome(solr所有配置文件存放的目录)。


把sorl文件夹复制到其他路径下,改名为solrhome或者其他名称,改名的目的是为了便于理解。


6、告诉sorl服务器solrhome的位置,修改solr工程的web.xml文件。
    
       solr/home
       D:\Java\solr
       java.lang.String
    
打开以上备注是的配置,并修改并配置为个刚才的solrhome


7、启动tomcat,访问http://localhost:8080/solr

出现该页面,则集成成功!
五、添加core
在solr 5.4中添加core的是通过命令行的方式进行添加。具体内容点击此处查看文档。进入D:\Java\solr-5.4.1\bin目录运行:solr start命令,启动solr实例,默认是已8983端口启动。可以通过solr status命令查询solr状态,具体内容请往下看↓

运行命令:solr create -c 生成core。生成core所在目录为上图中的solr_home。将刚才用命令生成的core拷贝到上面配置的solrhome目录下,这样当solr工程启动以后才能加载到该core。

启动tomcat,此时就能看到所添加的core。

在这里运行query查询document有点小蛋疼的问题。因为solr 5.4有2个管理页面一个测试页面index.html,一个admin.html,在index.html的页面操作会报错,在admin.html中操作就没问题。
五、后台功能介绍

1、 Analyzer


查看当前索引库中的字段列表,及分词效果。

域、字段列表:所有的域都是定义在schema.xml配置文件中。在solr中域必须是先定义后使用

如果想修改域的定义及自定义域需要修改schema.xml。

2、Documents

索引库的维护功能。可以对索引库进行增删改操作。在索引库中一条记录就是一个Document。


1):添加document

1、在solr中一条记录就是一个文档。

2、文档可以使用json数据格式描述:key就是域名(字段名),value:值。

3、在solr中每个文档必须有一个id域。类似于关系型数据库中表的主键。必须有且不能重复。

4、域必须先定义后使用。必须在schema.xml中定义。

2):更新document

添加一个新的文档如果id存在会想把id对应的文档删除,然后再添加以新的。先删除后添加。

3):删除document

a):根据id删除


b):根据查询删除

*:*:匹配所有文档。

域名:关键字

例如:id:change.me

 

删除所有文档:

*:*

 

删除指定id的文档:

id:change.me


3:Query

查询索引库,查询语法采用json格式

Q:查询条件

Fq:过滤条件,查询语句和查询的语法完全相同。可以设置多个过滤条件
sort:排序条件

start, rows:分页条件。Start起始记录,rows每页显示的记录数。

Fl:返回结果中域的列表

Df:默认搜索域

Hl:高亮显示

Hl.fl:高亮显示的域

Hl.simple.pre:高亮前缀

Hl.simple.post:高亮后缀





推荐阅读
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
author-avatar
亚丶喃7_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有