最近准备为一个产品做一个站内的搜索引擎,是一个java产品。由于原来做过Lucene.net,所以自然而然的就想到了使用Lucene。在复习Lucene的过程中发现了Solr这个和Lucene绑定在一起的Apache的子项目,发现这个搜索服务器正是我们想要的。原来我们做Lucene,会把索引和搜索都放在同一个网站下,也就是在网站启动的时候,或定时在网站应用程序中进行Lucene的初始化和索引,并使用Lucene搜索API提供搜索服务。这个过程,应用网站既提供了搜索内容的提供者(从数据库或文件提取数据给Lucene索引),也是搜索内容的索引者,又是用户搜索服务的结果提供者。这很明显是不够理想的,特别是在分布式集群部署环境下。Solr的出现,正好帮助我们解决了这个问题。单一的搜索服务被独立出来,提供数据的索引和搜索,并且这个搜索服务可以方便的为多个应用进行服务。余下的就是把搜索内容提供者也分离出来,形成一个或多个独立的服务。这样服务于服务之间的耦合就降低了,业务和功能的变化,都可以在某一个角色服务中处理,而不需要影响其他的服务。最重要的,Solr可以提供基于Http和XML的Web API,使它可以跨平台和语言进行服务。集群和分布式部署也变的更容易、风险更低,并且会更有针对性。新的搜索架构就会变成下图这样:

solr的安装

首先我们先来安装solr。安装solr比较简单。我的安装是在windows环境下进行,tomcat7 + solr 10.1。

1. 在网上下载solr的安装包,解压缩文件。

2. 找到solr.war文件,把文件复制到tomcat的webapps文件夹下,在这之前如果你的tomcat是运行着的,则先要停止运行。

3. 把example\resources\log4j.properties 复制到 $CATALINA_HOME/lib/ 目录下。

4. 然后把下载包中的solr-4.x.0/example/solr 文件夹复制到你希望存储的本地文件夹D:\solr下,这个文件夹会作为solr索引文件的存放目录:$SOLR_HOME。

5. 运行tomcat。把下载的文件example\lib\ext目录下的所有jar包复制到tomcat的webapps目录下的solr\WEB-INF\lib文件夹下。

6. 配置$SOLR_HOME。还是在tomcat的webapps\solr\WEB-INF目录下,找到web.xml文件,放开<env-entry>节点,配置上$SOLR_HOME,如下:

    <env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>d:\solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

完成上述步骤以后,重新启动tomcat,访问http://localhost:8080/solr/确认是否配置正常。

添加Document

solr安装好以后,我们需要测试solr是否可以正确运行。solr的搜索是基于文档的,没有文档,solr什么也搜索不到。所以我们现在就要尝试着添加文档。在solr的下载包里面有一些用于测试的文档,在example\exampledocs文件夹下。另外在这个文件夹下还有一个基于java命令行的测试工具post.jar,我们将使用这些文档和工具来作为测试。

使用命令 java -Durl=http://localhost:8080/solr/update -jar post.jar *.xml 把文件夹下所有的xml文件上传到solr上去,并索引。这样添加Document的工作就算完成。

查找Document

经过上一步的添加,14个document已经被索引到solr服务器中,我们就可以进行查询了。在浏览器中输入http://localhost:8080/solr/select?q=video,服务器将会返回一个xml文档,<result>标签下有多个<doc>标签,每一个<doc>就是被搜索到的和查询参数有关的document。如下图:

至此,solr已经安装成功,下一篇将介绍solr的相关基本概念。

Solr学习笔记(一)的更多相关文章

  1. Solr学习笔记之3、Solr dataimport - 从SQLServer导入数据建立索引

    Solr学习笔记之3.Solr导入SQLServer数据建立索引 一.下载MSSQLServer的JDBC驱动 下载:Microsoft JDBC Driver 4.0 for SQL Server ...

  2. Solr学习笔记之2、集成IK中文分词器

    Solr学习笔记之2.集成IK中文分词器 一.下载IK中文分词器 IK中文分词器 此文IK版本:IK Analyer 2012-FF hotfix 1 完整分发包 二.在Solr中集成IK中文分词器 ...

  3. Solr学习笔记之1、环境搭建

    Solr学习笔记之1.环境搭建 一.下载相关安装包 1.JDK 2.Tomcat 3.Solr 此文所用软件包版本如下: 操作系统:Win7 64位 JDK:jdk-7u25-windows-i586 ...

  4. Solr学习笔记之5、Component(组件)与Handler(处理器)学习

    Solr学习笔记之5.Component(组件)与Handler(处理器)学习 一.搜索篇 拼写检查(spellCheck) 作用:用来检查用户输入的检索内容是否存在,如果不存在则给它提示出相近或相似 ...

  5. Solr学习笔记之4、Solr配置文件简介

    Solr学习笔记之4.Solr配置文件简介 摘自<Solr in Action>. 1. solr.xml – Defines one or more cores per Solr ser ...

  6. solr学习笔记-入门

    solr学习笔记 1.安装前准备 solr依赖java 8 运行环境,所以我们先安装java.如果没有java环境无法启动solr服务,并且会看到如下提示: [root@localhost solr- ...

  7. solr学习笔记-开篇

    由于工作需要,近期接触了一下全文检索的相关技术,从lucenen到solr开始慢慢一路摸爬滚打,仅以此文记录自己的学习里程和记录下各种坑. 本次学习基于以下环境版本: java7,solr5.5.4( ...

  8. Solr学习笔记-在Tomcat上部署执行Solr

    上一篇我们初识了Solr而且学习了Jetty的启动方式.查看了Solr的管理界面,这一篇我们来实如今Tomcat上部署执行Solr. 部署环境: window7 jdk1.6.0_14 Solr-4. ...

  9. Solr学习笔记1(V7.2)

    下载压缩包http://archive.apache.org/dist/lucene/,解压后放到某一盘符下面 Windows下启动命令 :\solr-7.2.0>bin\solr.cmd st ...

  10. Solr学习笔记---部署Solr到Tomcat上,可视化界面的介绍和使用,Solr的基本内容介绍,SolrJ的使用

    学习Solr前需要有Lucene的基础 Lucene的一些简单用法:https://www.cnblogs.com/dddyyy/p/9842760.html 1.部署Solr到Tomcat(Wind ...

随机推荐

  1. anr产生的原理&如何避免(android)

  2. -----------------------------------项目中整理的非常有用的PHP函数库(一)-----------------------------------------------------

    1.PHP加密解密 PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密. function encryptDecrypt ...

  3. Thinkphp中验证码的使用以及验证的实现

    <input class="TxtValidateCodeCssClass" id="captcha" name="captcha" ...

  4. C# 参考之方法参数关键字:params、ref及out

    如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值.可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值.通过使用方法参数关键字,可以更改这种行为. params ...

  5. thinkphp开发规范

    1.编写目的     为了更好的提高技术部的工作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范.开发团队根据自己的实际情况,可以对本规范进行补充或裁减. ...

  6. 用 xampp 在 windows/Linux 下搭建代理服务器

    背景:学校上网开始收费,但实验室免费,由于宿舍和实验室都有ipv6,所以在实验室搭建代理服务器,让宿舍通过之上网. Windows下 两步: 1.编辑httpd.comf,去掉关于proxy的注释 L ...

  7. map vs hash_map

    1. map, multimap, set, multiset g++ 中 map, multimap, set, multiset 由红黑树实现 map: bits/stl_map.h multim ...

  8. C语言之参数传递

    学了四年的计算机,一直让自己比较苦恼的问题是C语言的参数传递问题,之所以说是苦恼,是因为在某年的一个学期,不幸接触到数据结构,光一个链表就把自己弄得死去活来的,而且自已一直就楞以为在操作的过程中,传递 ...

  9. 12个常用的js正则表达式

    在这篇文章里,我已经编写了12个超有用的正则表达式,这可是WEB开发人员的最爱哦. 1.在input框中只能输入金额,其实就是只能输入最多有两位小数的数字 //第一种在input输入框限制 <i ...

  10. HDU2546(01背包饭卡)

    电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家 ...