solr 的使用及安装

注本文以solr3.3为例

Solr 简介

   Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。
       Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。
       Solr 底层的核心技术是使用Apache Lucene 来实现的,简单的说Solr 是Lucene 的服务器化。需要注意的是Solr 并不是简单的对Lucene 进行封装,它所提供的大部分功能都区别于Lucene 。

==================================================

WINDOWS/linux SOLR安装

【linux参考】:http://sinykk.iteye.com/admin/blogs/1171098

【windows如下】http://archive.apache.org/dist/lucene/solr/3.3.0/

==================================================

环境参数:

Tomcat 7
Solr apache-solr-3.3.0
Jdk 1.6
Windows

搭建步骤:

1. 下载所需软件,安装配置Tomcat。

下载软件为 :Tomcat与Solr,jdk1.6,官网都可免费下载。

2. Tomcat 配置文件conf\server.xml

添加编码的配置 URIEncoding="UTF-8" (如不添加,中文检索时因为乱码搜索不到)。
添加后为:

<Connector port="8983" protocol="HTTP/1.1" connectionTimeout="20000"
           redirectPort="8443" URIEncoding="UTF-8" />

4. 将D:\solr\apache-solr-3.3.0 解压

5. 建立d:/solr/home主目录(可以根据自己的情况建立),把D:\solr\apache-solr-3.3.0\example\solr复制到该目录下。

6. 建立solr.home 环境变量:置为 d:/solr/home

7. 将solr.War复制到tomcat的webapp下启动是会自动解压。

8. 修改D:\resouce\java\tomcat\webapps\solr\WEB-INF\web.xml.

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

9. 启动tomcat,浏览器输入:http://localhost:8080/solr/ 
10.看到页面说明部署成功

==================================================

solr 将MYSQL数据库做成索引数据源【注意格式】

参考:http://digitalpbk.com/apachesolr/apache-solr-mysql-sample-data-config

==================================================

1、在solrconfig.xml中添加,增加导入数据功能

Xml代码  

  1. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  2. <lst name="defaults">
  3. <str name="config">data-config.xml</str>
  4. </lst>
  5. </requestHandler>

2、添加一个数据源data-config.xml,代码如下

Xml代码  

  1. <dataConfig>
  2. <dataSource type="JdbcDataSource"
  3. driver="com.mysql.jdbc.Driver"
  4. url="jdbc:mysql://localhost/test"
  5. user="root"
  6. password=""/>
  7. <document name="content">
  8. <entity name="node" query="select id,name,title from solrdb">
  9. <field column="nid" name="id" />
  10. <field column="name" name="name" />
  11. <field column="title" name="title" />
  12. </entity>
  13. </document>
  14. </dataConfig>

3、创建schema.xml语法,代码如下

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <schema name="example" version="1.4">
  3. <types>
  4. <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
  5. <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
  6. <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
  7. <analyzer type="index">
  8. <tokenizer class="solr.StandardTokenizerFactory"/>
  9. <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
  10. <filter class="solr.LowerCaseFilterFactory"/>
  11. </analyzer>
  12. <analyzer type="query">
  13. <tokenizer class="solr.StandardTokenizerFactory"/>
  14. <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
  15. <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  16. <filter class="solr.LowerCaseFilterFactory"/>
  17. </analyzer>
  18. </fieldType>
  19. <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>
  20. </types>
  21. <fields>
  22. <field name="id" type="string" indexed="true" stored="true" required="true" />
  23. <field name="title" type="string" indexed="true" stored="true"/>
  24. <field name="contents" type="text" indexed="true" stored="true"/>
  25. </fields>
  26. <uniqueKey>id</uniqueKey>
  27. <defaultSearchField>contents</defaultSearchField>
  28. <solrQueryParser defaultOperator="OR"/>
  29. <copyField source="title" dest="contents"/>
  30. </schema>

schema.xml 里重要的字段

要有这个copyField字段SOLR才能检索多个字段的值【以下设置将同时搜索 title,name,contents中的值】
<defaultSearchField>contents</defaultSearchField>
copyField是用來複製你一個欄位裡的值到另一欄位用. 如你可以將name裡的東西copy到default裡, 這樣solr做檢索時也會檢索到name裡的東西.
<copyField source="name" dest="contents"/>
<copyField source="title" dest="contents"/>

4、创建索引

http://192.168.171.129:8983/solr/dataimport?command=full-import

注:保证与数据库连接正确

==================================================

solr 创建增量索引

主要是修改data-config.xml 数据源

==================================================

Xml代码  

  1. <dataConfig>
  2. <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/demo" user="root" password=""/>
  3. <document name="products">
  4. <entity name="item" pk="id"
  5. query="SELECT id,title,contents,last_index_time FROM solr_articles"
  6. deltaImportQuery="SELECT id,title,contents,last_index_time FROM solr_articles
  7. WHERE id = ‘${dataimporter.delta.id}‘"
  8. deltaQuery="SELECT id FROM solr_articles
  9. WHERE last_index_time > ‘${dataimporter.last_index_time}‘">
  10. </entity>
  11. </document>
  12. </dataConfig>

注意数据库相关表的创建

如本例中 solr_articles表中有 last_index_time(timestamp)字段,每当增加或者更新了值都应修改last_index_time的值,以便增量索引能更新到

有问题请即时查看TOMCAT的LOG日志文件

运行:http://192.168.171.129:8983/solr/dataimport?command=delta-import

如果运行后未达到你的预期,请查看dataimport.properties文件的日期,并组合新SQL语句查询来调整问题

==================================================

multiple core(SOLR多个索引共存)

参考:http://wiki.apache.org/solr/CoreAdmin

==================================================

1、配置多个索引

Xml代码  

  1. <solr persistent="true" sharedLib="lib">
  2. <cores adminPath="/admin/cores">
  3. <core name="core0" instanceDir="core0" dataDir="D:\solr\home\core0\data"/>
  4. <core name="core1" instanceDir="core1" dataDir="D:\solr\home\core1\data" />
  5. </cores>
  6. </solr>

2、将D:\solr\apache-solr-3.3.0\example\multicore下的 core0,core1两个文件拷贝到D:\solr\home下,D:\solr\home目录下之前的任务目录及文件不变

注:D:\solr\home目录为D:\solr\apache-solr-3.3.0\example\solr

3、建立两个索引数据存放目录
D:\solr\home\core0\data
D:\solr\home\core1\data

4、修改其中一个索引如CORE1
修改solrconfig.xml为如下代码
【注 需要加入 lib 标签主要是因为DataImportHandler 为报错,这可能是官方的BUG】

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <config>
  3. <luceneMatchVersion>LUCENE_33</luceneMatchVersion>
  4. <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>
  5. <lib dir="D:/solr/apache-solr-3.3.0/contrib/extraction/lib" />
  6. <lib dir="D:/solr/apache-solr-3.3.0/dist/" regex="apache-solr-cell-\d.*\.jar" />
  7. <lib dir="D:/solr/apache-solr-3.3.0/dist/" regex="apache-solr-clustering-\d.*\.jar" />
  8. <lib dir="D:/solr/apache-solr-3.3.0/dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />
  9. <lib dir="D:/solr/apache-solr-3.3.0/contrib/clustering/lib/" />
  10. <lib dir="/total/crap/dir/ignored" />
  11. <updateHandler class="solr.DirectUpdateHandler2" />
  12. <requestDispatcher handleSelect="true" >
  13. <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
  14. </requestDispatcher>
  15. <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
  16. <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
  17. <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
  18. <admin>
  19. <defaultQuery>solr</defaultQuery>
  20. </admin>
  21. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  22. <lst name="defaults">
  23. <str name="config">data-config.xml</str>
  24. </lst>
  25. </requestHandler>
  26. </config>

最后运行 http://localhost:8080/solr/core1/admin/

==================================================

定时更新SOLR索引

因SOLR的索引更新是经过HTTP的,所以不能直接使用CRON,现在我们换一种方式

将要访问的HTTP写入到PHP文件中,经过定时运行PHP文件来达到更新SORL索引目录

10/* * * * * /usr/local/php/bin/php /yym/cronfile/solr_cron.php?t=index_delta

==================================================

Php代码  

  1. /*
  2. * Created on 2011-9-15
  3. * @author tianyongchun
  4. * 此文件用于定时更新SOLR的索引
  5. * @param t为更新类型 带不同的参考更新不同的索引
  6. *
  7. * 此文件可以通过LINUX的CRON方法运行以便达到定时更新索引
  8. */
  9. set_time_limit(0);
  10. /**
  11. *
  12. * 增量更新
  13. * index_delta
  14. * 全更新
  15. * index_full
  16. *
  17. *
  18. */
  19. $t = $_GET[‘t‘];
  20. //http://192.168.171.129:8983/solr/dataimport?command=delta-import
  21. $url = ‘http://localhost:8983/solr/dataimport?command=‘;
  22. $r = ‘result error‘;
  23. if($t ==‘index_delta‘){
  24. $r = file_get_contents($url.‘delta-import‘);
  25. }else if($t =="index_full"){
  26. $r = file_get_contents($url.‘full-import‘);
  27. }else{
  28. echo ‘param error‘;
  29. }
  30. var_dump($r);
  31. ?>

==================================================

solr 的PHP客户端

solr-php-client

==================================================

从名字就可以看出,这是 Solr 的 PHP 客户端开发包。
通过这个包可以像
http://code.google.com/p/solr-php-client/downloads/list

==================================================

常见错误 org.apache.solr.common.SolrException: Error loading class ‘org.apache.solr.handler.dataimport.DataImportHandler 
================================================== 
将solrconfig.xml中的值改为如下:【主要是指定SOLR的主目录路径出错】

<lib dir="D:/solr/apache-solr-3.3.0/contrib/extraction/lib" />
  <!-- When a regex is specified in addition to a directory, only the
       files in that directory which completely match the regex
       (anchored on both ends) will be included.
    -->
  <lib dir="D:/solr/apache-solr-3.3.0/dist/" regex="apache-solr-cell-\d.*\.jar" />
  <lib dir="D:/solr/apache-solr-3.3.0/dist/" regex="apache-solr-clustering-\d.*\.jar" />
  <lib dir="D:/solr/apache-solr-3.3.0/dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />

<!-- If a dir option (with or without a regex) is used and nothing
       is found that matches, it will be ignored
    -->
  <lib dir="D:/solr/apache-solr-3.3.0/contrib/clustering/lib/" />

-----------------------------
    
I experienced the same issue. With Solr 1.x, I was copying out the
‘example‘ directory to make my solr installation. However, for the
Solr 3.x distributions, the DataImportHandler class exists in a
directory that is at the same level as example: "dist", not a
directory within.

You‘ll either want to take the entire apache 3.1 directory, or modify
solrconfig to point to the new place you‘ve copied it:

<lib dir="../../dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />

==================================================

solr搜索不出数据

==================================================

SELECT id,title,main_contents as contents,last_index_time FROM solr_articles
要使用<field column="NAME" name="name" />最好将schema.xml中通过field配置相应的名字

==================================================

solr 分布式(复制)配置

参考:http://hi.baidu.com/648636045/blog/item/3985aaf1f8f150d00a46e080.html

==================================================

时间: 2024-09-29 18:57:19

solr 的使用及安装的相关文章

solr在tomcat下安装、配置

solr简介 solr是受欢迎的,速度极快的开源企业搜索平台.主要功能包括强大的全文搜索,搜索词高亮显示,分面搜索,近实时的索引,动态聚类,数据库集成,丰富的文件(例如,Word,PDF)处理,和空间搜索.Solr是高度可靠的,可扩展性和容错性,提供了分布式的索引,复制和负载均衡的查询,自动故障转移和恢复,集中配置和更多.许多世界上最大的互联网网站的导航.搜索功能都是采用solr实现的. solr是一个基于Lucene.采用JAVA语言编写.运行于servlet容器中(如jetty,tomcat

电商论道---(3)Solr全文搜索引擎的安装

接上篇,Solr的准备工作完成后,本节主要介绍Solr的安装,其实Solr不需要安装.直接下载就可以了 1.Solr安装 下载地址 :http://lucene.apache.org/solr/ 电商论道---(3)Solr全文搜索引擎的安装,码迷,mamicode.com

点滴记录——Ubuntu 14.04中Solr与Tomcat整合安装

转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965981 1. 安装jdk,tomcat sudo apt-get install tomcat7 openjdk-7-jdk openjdk-7-jre 2. 到http://lucene.apache.org/solr/下载最新的solr,注意别下到源码包 solr-4.9.0.tgz sudo mv solr-4.9.0.tgz /mnt cd /mnt && sudo t

solr 5.1.0安装-Windows(亦可用于5.4.1)

以前4.10的时候写过一个安装教程,是安装在tomcat的,在来安装5.1的时候,看了下简介,发现从5.x后solr集成了jetty,安装变得简单了不少. 现在只需要三步就能搞定,下载solr包解压,解压,启动就行了,当然要有jdk环境(1.7以上必须) 1,下载 solr 下载地址:http://www.apache.org/dyn/closer.cgi/lucene/solr/5.1.0 2,解压目录 3,通过命令行启动 通过cmd进入solr根目录 >>H: >>cd \po

solr 5.1.0安装-Windows

以前4.10的时候写过一个安装教程,是安装在tomcat的,在来安装5.1的时候,看了下简介,发现从5.x后solr集成了jetty,安装变得简单了不少. 现在只需要三步就能搞定,下载solr包解压,解压,启动就行了,当然要有jdk环境(1.7以上必须) 1,下载 solr 下载地址:http://www.apache.org/dyn/closer.cgi/lucene/solr/5.1.0 2,解压目录 3,通过命令行启动 通过cmd进入solr根目录 >>H: >>cd \po

Solr 6.5.1 安装配置

环境介绍 solr 6.5 tomcat8 jdk1.8 win7系统 一.下载solr安装包 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/6.5.1/solr-6.5.1.zip 二.安装solr 以win7为例 1.将下载下来的solr-6.5.1.zip解压 2.在D:\work\solr_root\下新建文件夹solr_home 3.在solr_home中新建文件夹solr_core 4.从solr-6.5.0

Solr 4,IKAnalyzer安装配置

一. JDK 1.5+ .Tomcat是solr运行的必须环境. 二.  下载Solr,得到solr-4.10.2.tgz  http://lucene.apache.org/solr/ 三.   安装: 1.解压solr-4.10.2.tgz tar  –zxvf  solr-4.10.2.tgz  得到solr-4.10.2目录 2.将 solr-4.10.2/example/webapps/solr.war 拷贝到Tomcat的webapps目录下,启动Tomcat (解压solr.war

solr 4.6的安装配置

从网上看了很多资料,很多都是老的.自己也算是结合着弄出来了. 1.下载的准备工作 tomcat8.solr4.6   具体的下载自己去找去吧.或者后期我在提供. 2.开始配置 tomcat路径:E:\tomcat8\apache-tomcat-8.0.30 solr4.6路径:E:\Program Files\solr-4.6.0 首先,将solr目录中的example/webapps中的solr.war复制到tomcat下的webapps中,然后启动tomcat.之后关闭tomcat. 接着,

Solr 4.4.0安装

软件包准备 JDK http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin Solr https://archive.apache.org/dist/lucene/solr/4.4.0/solr-4.4.0.tgz Tomcat https://archive.apache.org/dist/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.tar.gz 安装路