Solr使用初探——Solr的安装环境与配置
Solr是一个apache名下很好用的开源索引、搜索工具,网上的资料虽多但很杂,笔者花了一天的时间对Solr进行了较为初步的研究,对Solr的基础应用做了一定的总结。文中涉及到的配置方法并不唯一,API的用法也未必规范,仅希望能够通过此文让大家对solr更快的入手。
一、Solr的安装环境与配置:
1、 下载所需软件,安装配置Tomcat
首先下载Tomcat与Solr,Tomcat可在各软件网站下载得到,Solr下载地址如下:
http://mirror.bjtu.edu.cn/apache/lucene/solr/1.4.1/apache-solr-1.4.1.zip
Tomcat按照安装流程进行即可,本文中Tomcat安装在X盘下,设置监听端口时改为8983(默认为8080),当然也可以在配置文件中修改,路径为X:\Tomcat 6.0\conf\server.xml,并添加编码格式为UTF-8以使得Solr能够正确解析url递送的查询要求。
<Connector port="8983" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
2、构建文件目录
将apache-solr- 1.4.1.zip解压到某文件夹,目录如下图所示:
在X盘下建立目录solr,将解压文件中的example文件夹下的内容全部拷贝到solr中,此时solr文件夹下会有一个名为webapps的空文件夹,将解压文件夹中的dist文件夹下的apache-solr-1.4.1.war文件拷贝到webapps中,重命名为solr.war。
3、配置Solr工作环境
在Tomcat中注册Solr。在X:\Tomcat 6.0\conf\Catalina\localhost下(目录不存在则手工建)创建配置文件solr.xml,内容为:
<Context docBase="X:/solr/webapps/solr.war" reloadable="true" >
<Environment name="solr/home" type="java.lang.String" value="X:/solr/solr" override="true" />
</Context>
docBase为网页发布内容,Environment为solr的配置环境。
4、配置索引数据格式
在X:\solr\solr\conf当中有schema.xml文件,可以配置索引数据格式。scheme.xml虽然较长但注释丰富,而且大部分内容属于数据类型的定义,我们只需要在<fields> 、</fields>标签之间添加自己的数据即可。当然,我们也可以自定义类型。
以样例中的第一个字段为例:
<field name="id" type="string" indexed="true" stored="true" required="true" />
类型为string,需要索引,需要存储,是一个不可为空的字段,简单易懂。
其他配置如下:
<uniqueKey>id</uniqueKey>
配置整个索引中唯一的键值,用来区分不同的索引条目。
<defaultSearchField>text</defaultSearchField>
默认的搜索字段,如果在搜索时不特殊指定字段,则会搜索这一字段。
<solrQueryParser defaultOperator="OR" />
搜索时对同一字段不同关键字的处理方法,根据项目需要选择“与”或者“或”。
<copyField source="cat" dest="text" />
<copyField source="name" dest="text" />
…………
默认搜索字段较多时可以这样设置,如果只有一个字段待搜索,那么只需在defaultSearchField中配置。
5、运行solr
启动Tomcat,访问http://localhost:8983/solr/admin/ 即可见到主页,从上至下共三部分,配置状态、查询与帮助链接。
http://localhost:8983/solr/admin/analysis.jsp 页面可以考察分词器的工作情况;
http://localhost:8983/solr/admin/form.jsp 页面可以模拟搜索请求构建请求url。
在solr配置完毕后第一次启动Tomcat时,Tomcat中会出现很多新的文件及文件夹。在Tomcat下会出现一个solr文件夹,那里用来存放索引;在Tomcat的webapps文件夹下也会出先一个solr文件夹,存放web工程;在Tomcat的logs文件夹下会出下catalina开头的日志文件,我们可以查找solr的载入异常以及索引与查询的url记录。
6、添加索引
在Tomcat与Solr开启的情况下,我们可以添加索引。进入X:\solr\exampledocs文件夹我们可以看到很多xml文件,以及post.jar文件,这里就是用来储存xml格式的待索引文件的地方。打开solr.xml我们可以看到:
<add>
<doc>
<field name="id">SOLR1000</field>
<field name="name">Solr, the Enterprise Search Server</field>
<field name="manu">Apache Software Foundation</field>
…………
<field name="incubationdate_dt">2006-01-17T00:00:00.000Z</field>
</doc>
</add>
add标签表明这是要添加一个索引(其他标签参考solr的文档或者solr wiki),各个字段均有数据,请注意最后一行date类型的数据,与java中的不同。
那么怎样能够将这个xml传送到solr进行索引呢,这就要用到post.jar。开启命令行,进入post.jar所在文件夹,运行:
java -Durl=http://localhost:8983/solr/update -Dcommit=yes -jar post.jar *.xml
程序运行成功索引便被加入。添加索引还可以通过solr提供的java接口solrj编程实现,在下面我们会讲到。
索引添加成功之后便可以通过上面提到的solr网页接口进行搜索测试。
7、添加中文分词
笔者使用的是IKAnalyzer的最新版本IKAnalyzer3.2.5Stable.jar,对Solr提供了较好的支持,可以在各软件网站或CSDN较容易的搜索到。使用时将IKAnalyzer3.2.5Stable.ja放置在X:\Tomcat 6.0\webapps\solr\WEB-INF\lib文件夹下。
由于Solr默认选用的是lucene相应版本自带的分词器,所以要修改配置才能转换为IKAnalyzer。同样是修改X:\solr\solr\conf下的schema.xml文件,修改部分用红色标示出:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false" />
…………
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true" />
…………
</analyzer>
</fieldType>
分词器均为IKAnalyzer自带的支持solr的IKTokenizerFactory,在索引时不按照最大匹配进行分词,而在搜索时按照最大匹配进行分词。
IKAnalyzer也支持用户自定义词典。首先在X:\Tomcat 6.0\webapps\solr\WEB-INF\下建立classes文件夹,在classes文件夹中新建IKAnalyzer.cfg.xml文件,内容为:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE properties (View Source for full doctype...)>
<properties version="1.0">
<comment>IK Analyzer 扩展配置</comment>
<entry key="ext_dict">/mydict.dic</entry>
<entry key="ext_stopwords">/mystopword.dic</entry>
</properties>
mydict.dic为自定义分词词典,mystopword.dic为自定义停词词典,dic文件应当被保存为UTF-8格式,首行为空行,每个词占一行。dic文件的存放位置也是classes目录。
Solr使用初探——Solr的安装环境与配置的更多相关文章
- solrcloud(solr集群版)安装与配置
1 Solr集群 1.1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的 ...
- Solr学习总结 Solr的安装与配置
接着前一篇,这里总结下Solr的安装与配置 1.准备 1.安装Java8 和 Tomcat9 ,java和tomcat 的安装这里不再重复.需要注意的是这两个的版本兼容问题.貌似java8 不支持,t ...
- solr在windows下的安装及配置
solr在windows下的安装及配置 首先,solr是基于Java开发的,所以使用的话需要先进行java环境的配置,在Java环境配置好之后就可以去http://www.apache.org/dyn ...
- solr添加中文IK分词器,以及配置自定义词库
Solr是一个基于Lucene的Java搜索引擎服务器.Solr 提供了层面搜索.命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式).它易于安装和配置,而且附带了一个基于H ...
- Solr使用初探——SolrJ的使用
二.SolrJ的使用 SolrJ覆盖了solr的全部功能,下面将自己在实际开发中所使用的程序粘贴出来并适当加以解释,由于本人比较菜,代码书写不是那么的精练,还请见谅. 1. 创建solrserver ...
- Solr系列一:Solr与Tomcat的整合
第一次尝试着去写一个系列的教程,希望自己能坚持下去,也希望自己能够通过博客的编写来加深自己对solr搜索的理解. Solr与Tomcat的整合网上有很多教程,我就以我的整合为例来讲述一下我的整合过程, ...
- solr笔记之solr下载及安装
在学习solr过程中,磕磕碰碰,遇到过许多问题,所以特写下笔记,以供需要的时候时常翻阅,也给能看到该博文的博友提供一个不全面的参考. 一.solr简介: Solr是一个独立的企业及搜索应用服务器,它对 ...
- Solr系列一:Solr(Solr介绍、Solr应用架构、Solr安装使用)
一.前言 前面已经学习了Lucene的分词.索引详解.搜索详解的知识,已经知道开发一个搜索引擎的流程了.现在就会有这样的一个问题:如果其他的系统也需要使用开发的搜索引擎怎么办呢?这个时候就需要把开发的 ...
- Solr学习之四-Solr配置说明之二
上一篇的配置说明主要是说明solrconfig.xml配置中的查询部分配置,在solr的功能中另外一个重要的功能是建索引,这是提供快速查询的核心. 按照Solr学习之一所述关于搜索引擎的原理中说明了建 ...
随机推荐
- Test Controller Tool
- NOIP2002 均分纸牌
题一 均分纸牌 (存盘名: NOIPG1) [问题描述] 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为: ...
- Codeforces294B - Shaass and Bookshelf(贪心)
题目大意 给你N本书,每本书由一个厚度t[i](1或者2),宽度w[i],高度都是一样,把一些书竖着放,然后一些书横着放在同一层,就像下图那样放: 问你把所有的书放好之后竖着的书的总厚度是多少? 题解 ...
- linux进程,作业,守护进程,进程间同步
ps axj命令查看系统中的进程.参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息: 凡是TP ...
- windows 7 下安装 IIS 和 ArcGis Server 9.3 遇到的问题及解决方法
windows 7 下安装 IIS 和 ArcGis Server 9.3 遇到的问题及解决方法 分类: ArcGIS server 计算机2012-07-31 14:17 631人阅读 评论(0) ...
- POJ 1657 Distance on Chessboard 简单的计算问题
Distance on Chessboard Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23096 Accepted ...
- flex dispatchEvent 实例
flashbuilder sdk:3.6:jdk:1.7,:tomcat:7:myeclipse:10.0 Flex dispatchEvent实例下载:点击打开链接 Flex dispatchEve ...
- 动态添加DOM时,绑定的click事件会重复执行
最近因为业务需求,需要重写window的alert和confirm弹窗,但是每次显示的提示按钮不相同,所有每次打开的弹窗都需要重写生成,但是对于相同的按钮会保留上次创建时的click事件,所以当你创建 ...
- 验证(Verification)与确认(Validation)的差别
验证(Verification)与确认(Validation)的差别 说法一: (2)“验证(Verification)”的涵义 通过提供客观证据对规定要求已得到满足的认定. (2)“确认(Valid ...
- linux 查看并终止进程
1,查看port被那个进程占用 比如: netstat -anp | grep 1160 ps:查看port1169被那个进程占用. 2.查找进程 比如 :ps -ef | grep 'tomcat' ...