最近准备为一个产品做一个站内的搜索引擎,是一个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. mongo复习

    $pop:-1移除数组的第一个元素,1移除最后一个元素eg: db.c.update({"name" : "toyota"},{$pop:{"titl ...

  2. structs2标签简单实用,及自定义转换器示例代码

    一.在structs.xml中配置 <structs> <package name="tagp" namespace="/test" exte ...

  3. mysql 服务无法启动 服务没有报告任何错误

    问题 解决方法 1.必须保证 mysql 下不存在 data 文件夹,如果存在 data 文件夹,则先删除 mysql 下的 data 文件夹,然后初始化 mysqld --initialize 服务 ...

  4. JS面试题及答案总结

    1. 截取字符串abcdefg的efg  <div id="test">abcdefg</div> var mytext=document.getEleme ...

  5. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  6. 平衡二叉树,AVL树之图解篇

    学习过了二叉查找树,想必大家有遇到一个问题.例如,将一个数组{1,2,3,4}依次插入树的时候,形成了图1的情况.有建立树与没建立树对于数据的增删查改已经没有了任何帮助,反而增添了维护的成本.而只有建 ...

  7. Js注册等待

    <为维护网上公共秩序和社会稳定,请您自觉遵守以下条款: <br> <br>  一.不得利用本站危害国家安全.泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用 ...

  8. 新浪微博客户端(10)-切换多个fragment

    ViewController.m #import "ViewController.h" #import "DJOneViewController.h" #imp ...

  9. dns (域名系统)

    dns (域名系统) DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP ...

  10. XML做下拉列表

    5-18X.php主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...