一,安装
1,下载solr 3.3.0,解压缩
2,将\apache-solr-3.3.0\example\webapps\solr.war放到\tomcat\Tomcat6-2\webapps下解包.生成名字为solr的工程.
3,在\tomcat\conf\Catalina\localhost文件夹下,创建solr.xml(对应webapps下的solr工程),xml文件内容为
<Context debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="C:/web/solr" override="true" />
</Context>
指定了solr.home为C:/web/solr...tomcat启动后会在这个路径solr.home/conf下加载相关配置文件
4,\apache-solr-3.3.0\example\solr下的文件复制到solr.home中(即C:/web/sol下)
5,访问http://localhost:8080/solr/admin/如果出现页面,表明部署成功.点击search按钮可以看到服务器的回应
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="indent">on</str>
<str name="start">0</str>
<str name="q">*:*</str>
<str name="rows">10</str>
<str name="version">2.2</str>
</lst>
</lst>
<result name="response" numFound="0" start="0"/>
</response>
由于没有建索引,而且页面不支持中文参数,所以暂时无法进行有意义的测试
二,中文分词
lucene在升级到3.0之后改变了api,而目前流行的中文分词器中,有些并没有同步更新,于是选择了IKAnalyzer3.2.5.安装步骤:
1,下载IKAnalyzer3.2.5Stable_bin.zip,解压缩.将IKAnalyzer3.2.5Stable.jar导入工程.然后在solr.home/conf(即C:/web/solr/conf)下找到schema.xml,加入如下代码----这段代码定义了text类型,以及处理方式,这个类型会在--第三部分,建立索引--中用到
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>
2,访问http://localhost:8080/solr/admin/analysis.jsp,测试分词效果
三,建立索引
1,打开solr.home/conf/solrconfig.xml,加入如下代码----如果uri包含/dataimport,则用DataImportHandler处理
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">../db/conf/db-data-config.xml</str>
</lst>
</requestHandler>
<str name="config">../db/conf/db-data-config.xml</str> ---指定数据库配置文件的位置
之后将apache-solr-3.3\apache-solr-3.3.0\dist下的apache-solr-dataimporthandler-3.3.0.jar引入工程
2,新建db-data-config.xml(路径和名称要符合上面的配置),加入如下代码
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.110.112:3396/laws_and_regulations" user="root" password="123456"/>
<document name="documents">
<entity name="documents" pk="id" query="select id,title,content,publishtime,validtime,category1,category2,invalidtime,publishorg from laws_and_regulations WHERE '${dataimporter.request.command}' != 'delta-import' OR last_modified > '${dataimporter.last_index_time}' limit ${dataimporter.request.offset},${dataimporter.request.length}">
<!-- <field column="id" name="id" />
<field column="title" name="title" />
<field column="content" name="content" />
<field column="publishtime" name="publishtime" />
<field column="validtime" name="validtime" />
<field column="category1" name="categor1" />
<field column="category_2" name="categor2" />
<field column="invalidtime" name="invalidtime" />
<field column="publishorg" name="publishorg" />
-->
</entity>
</document>
</dataConfig>
1)dataSource指定数据源
2)document name作用不明
3)查询语句中where后面的语句用于判断是否进行增量索引(待续),limit限制索引条目数,防止outofmemory错误.
4)注释掉的部分,column属性匹配数据库字段名称,name属性在schema中定义(见第三步),如果column和name相同,可以省略这个配置
3,打开solr.home/conf/schema.xml,把如下代码添加到<fields>标签内
<field name="title" type="text" indexed="true" stored="true" multiValued="true"/>
<field name="category1" type="text" indexed="true" stored="true"/>
<field name="category2" type="text" indexed="true" stored="true"/>
<field name="content" type="text" indexed="true" stored="true" multiValued="true"/>
<field name="publishtime" type="long" indexed="true" stored="true"/>
<field name="validtime" type="long" indexed="true" stored="true"/>
<field name="invalidtime" type="long" indexed="true" stored="true"/>
<field name="publishorg" type="text" indexed="true" stored="true"/>
name匹配步骤2中的name,type在schema.xml文件靠前的位置定义.由于我们在第二部分:中文分词中已经定义了text,并加入了中文分词器,所以将title,content这种需要中文检索的字段的type指定为text
4,访问http://localhost:8080/solr/dataimport?command=full-import&clean=true&offset=0&length=10000&indent=on
1)dataimport触发DataImportHandler
2)command=full-import表示全部索引
3)clean=true删除原来的所以,默认为true
4)offset和length对应db-data-config.xml中的查询语句,默认JVM设置下length=20000就会导致outofmemory
如果出现回应
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<lst name="initArgs">
<lst name="defaults">
<str name="config">../db/conf/db-data-config.xml</str>
</lst>
</lst>
<str name="command">full-import</str>
<str name="status">busy</str>
<str name="importResponse">A command is still running...</str>
<lst name="statusMessages"/>
<str name="WARNING">This response format is experimental. It is likely to change in the future.</str>
</response>
表示执行成功,线程正在建立索引,status为busy.,此时再次刷新页面可以看到当前消耗的时间,处理的文档数等
同时后台输出日志
出现time taken = xx:xx:xx 意味着索引结束
刷新页面后可以看到status变成了idle.
在常见索引的过程中solr.home下会出现一个data文件夹,来存储索引.索引格式可参考http://forfuture1978.iteye.com/blog/546824
5,访问http://localhost:8080/solr/admin/输入查询语句,例如title:2007(表示在title字段中匹配含有2007的条目),点击search后可以看到返回结果,测试中部分结果如下
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="indent">on</str>
<str name="start">0</str>
<str name="q">title:2007</str>
<str name="rows">10</str>
<str name="version">2.2</str>
</lst>
</lst>
<result name="response" numFound="27" start="0">
<doc>
<str name="category1">中国法规规章库</str>
<str name="category2">医药卫生</str>
<arr name="content"><str>药品注册管理办法(2007年)
(国家食品药品监督管理局令第28号)
《药品注册管理办法》于2007年6月18日经国家食品药品监督管理局局务会审议通过,现予公布,自2007年10月1日起施行。
局长:邵明立
二○○七年七月十日
---------------------------------------------------------未完待续---------------------------------------------------------------
分享到:
相关推荐
其中,bin 目录包含 Solr 的运行脚本,contrib 目录包含一些贡献软件/插件,用于增强 Solr 的功能。dist 目录包含 build 过程中产生的 war 和 jar 文件,以及相关的依赖文件。docs 目录包含 Solr 的 API 文档。...
### Solr的安装使用步骤详解 #### Solr概述与特性 **Solr** 是 Apache 下的一个顶级开源项目,它基于 **Lucene** 进行构建,提供了强大的全文搜索能力。相较于 Lucene,Solr 提供了更为丰富的查询语言支持,并且...
2. **基本 Solr 运行步骤**: - 安装并确保 Tomcat 可以正常运行。 - 解压 Solr 4.0.0 的安装包至指定目录。 - 将 `solr.war` 文件从 Solr 的 `example\webapps` 目录复制到 Tomcat 的 `webapps` 目录下。 - ...
1. **Java Development Kit (JDK) 1.7**:Solr 需要 Java 运行环境支持,这里我们选择 JDK 1.7 版本。 2. **Apache Tomcat 7.0**:Tomcat 作为应用服务器来部署 Solr。 #### 二、下载所需项目 1. **Solr 4.7.0**:...
Solr 是一个开源的全文搜索引擎,由 Apache 软件基金会开发。版本 4.4.0 是 Solr 的一个重要里程碑,它包含了丰富的...通过熟练掌握这些步骤,你将能够成功地在生产环境中运行 Solr,提供高效、强大的全文搜索服务。
8. **验证安装**:安装完成后,可以通过Ambari的监控功能检查Solr服务是否正常运行,以及执行一些基本的搜索操作来验证功能。 9. **维护与更新**:如果需要升级或调整Solr,可以按照类似的过程离线升级服务,同时...
这些脚本会加载`solr.in.sh`或`solr.in.cmd`环境变量,并调用Java运行时执行`start.jar`。Solr的核心配置文件是`solrconfig.xml`和`schema.xml`,它们定义了索引的结构和处理查询的方式。 当你遇到404错误,首先...
在这个“配置好的solr启动环境”中,我们有一个预先配置好的Solr运行环境,尤其适合快速部署和测试。 该压缩包文件名为“solrtomcat”,暗示了Solr是通过Tomcat这样的Servlet容器来运行的。Tomcat是一个轻量级的...
在Solr项目中,jar包扮演着至关重要的角色,它们包含了Solr运行所需的类库和依赖。以下将详细介绍Solr所需jar包及其相关知识点。 1. **Solr核心组件**: Solr的核心组件包括索引和查询处理、缓存机制、分布式搜索...
首先,为了运行 Solr,我们需要先安装 Java 开发工具包(JDK)。这里我们选择了 JDK 1.7。使用 rpm 命令安装 JDK 1.7,并通过编辑 `/etc/profile` 文件设置环境变量,确保系统能够识别到 JDK 的路径。记得在修改了 ...
在Windows或Linux环境下,Solr的搭建主要包括以下步骤:下载Solr二进制包,解压,配置Solr核心,启动Solr服务器,并通过Web界面管理索引和查询。 **Spring**: Spring是一个全面的Java企业级应用开发框架,它简化了...
3. `example`:包含了一个示例配置,展示了如何设置和运行Solr的基本步骤。 4. `dist`:包含Solr的jar文件和其他依赖库。 5. `contrib`:包含了一些额外的功能模块,比如数据分析器、图表和地图等。 在部署Solr时,...
安装Solr的过程相对简单,大致步骤如下: 1. 将下载的压缩包解压到一个适当的目录。 2. 进入`bin`目录,根据操作系统运行相应的启动脚本(如`bin\solr start`或`bin\solr start -e cloud`)来启动Solr服务器。 3. ...
SolrCore 目录中包含了运行 Solr 实例所有的配置文件和数据文件,Solr 实例即为 SolrCore。 1. **创建 SolrHome**:复制 server-》solr 文件到新建的 solrhome 下。 2. **创建 SolrCore**:在 SolrHome 目录下复制...
标题中提到的"ikanalyzer-solr中文分词包兼容solr7.5"意味着这个分词器已经过优化,可以与Solr 7.5版本无缝集成,确保在该版本的Solr环境中正常运行。 首先,我们来了解一下ikanalyzer的核心组件: 1. `ik-...
接下来,确保你的系统已经安装了 Java Development Kit (JDK) 且环境变量配置正确,因为 Solr 需要 JDK 来运行。 安装完成后,进入 Solr 的解压目录,启动 Solr 服务器。这通常可以通过运行 `bin/solr start` 命令...
总之,Solr 3.5 整合到 Tomcat 可以让你利用 Tomcat 的稳定性和灵活性来运行和管理 Solr 搜索服务,从而在 web 应用中实现高效的全文检索功能。通过理解 Solr 的配置和 Tomcat 的部署机制,你可以更好地定制和扩展你...
以下是Solr 6.4.2版本的详细安装和配置步骤: 1. **下载与解压**:首先从Apache官方网站获取Solr 6.4.2的压缩包,解压后会得到一个名为`solr-6.4.2`的目录。 2. **运行Solr服务器**:进入解压后的目录,找到`bin`...