`
rox
  • 浏览: 43825 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

Apache Solr集成至Tomcat

阅读更多

 

  Apache Solr集成至Tomcat

    原有系统已经开发,框架以SSH为基础,页面编码GBK,数据库为oracle,容器为tomcat6,需要整合全文检索,下面只是一个简单的整合测试。

1、嵌入Tomcat

解压 apache-solr-1.3.0.tgz,拷贝apache-solr-1.3.0\example\example-DIH\solr目录到Tomcat的安装目录后,修改solr目录中的solr.xml,屏蔽rss部分的配置,内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<solr sharedLib="lib" persistent="true">
 <cores adminPath="/admin/cores">
  <core default="true" instanceDir="db" name="db"></core>
<!--
  <core default="false" instanceDir="rss" name="rss"></core>
 -->
 </cores>
</solr>

  • 删除Tomcat\solr\rss目录
  • Tomcat\solr\db\lib目录下添加必要jarojdbc14.jarslf4j-jdk14-1.5.5.jarslf4j-api-1.5.5.jarsolr-dataimporthandler-1.4-SNAPSHOT.jar
  • 拷贝apache-solr-1.3.0\example\webapps\solr.warTomcat\webapps目录下。
  • 创建Tomcat\conf\Catalina\localhost\solr.xml,内容如下:

<Context docBase="${catalina.home}/webapps/solr.war" debug="0" crossContext="true" >
   <Environment name="solr/home" type="java.lang.String" value="${catalina.home}/solr" override="true" />
</Context>

  • 修改Tomcat\conf\server.xml,添加一个端口为8983Connector,内容如下:

<Connector port="8983" protocol="HTTP/1.1" 

               connectionTimeout="20000" 

               redirectPort="8443" URIEncoding="UTF-8"/>





2、配置DataImportHandler

change @ 20097110:19:57

    主要修改Tomcat\solr\db\conf\db-data-config.xmlTomcat\solr\db\conf\schema.xmlTomcat\solr\db\conf\solrconfig.xml,三个配置文件:

  • db-data-config.xml

<dataConfig>

    <dataSource driver="oracle.jdbc.driver.OracleDriver"

    url="jdbc:oracle:thin:@localhost:1521:orcl"

    user="solr" password="solr" batchSize="50"/>

    <document name="contents" >

        <entity name="content" pk="ID"

        query="select * from CONTENT"

        deltaQuery="select ID from CONTENT where to_char(PUBTIME,'yyyy-mm-dd hh24:mi:ss') > '${dataimporter.last_index_time}'"

        transformer="ClobTransformer">

            <field name="title" column="TITLE" />

            <field column="CONTENT" clob="true"/>

            <field name="pubtime" column="PUBTIME" />

        </entity>

    </document>

</dataConfig>

  • schema.xml

    types标签最后,追加fieldtype,名称为text_cjk,中日韩分词分析器;

    ......



    <fieldtype name="text_cjk" class="solr.TextField"> 

      <analyzer class="org.apache.lucene.analysis.cjk.CJKAnalyzer"/> 

    </fieldtype>



 </types>



    屏蔽或清除<fields></fields>中的全部代码,并添加如下内容:

 <fields>

   <field name="id" type="slong" indexed="true" stored="true" required="true" /> 

   <field name="title" type="text_cjk" indexed="true" stored="false"/>

   <field name="content" type="text_cjk" indexed="true" stored="true"/>

   <field name="pubtime" type="date" indexed="true" stored="true"/>

   <field name="searchtext" type="text_cjk" indexed="true" stored="false" multiValued="true"/>

 </fields>



    修改默认唯一索引为先前定义的id

 <uniqueKey>id</uniqueKey>



    修改默认搜索字段为先前定义的searchtext,并将要搜索的titlecontent都拷贝到searchtext中,方便统一检索:

......



 <defaultSearchField>searchtext</defaultSearchField>

......



   <copyField source="title" dest="searchtext"/>

   <copyField source="content" dest="searchtext"/>

......

 

add @ 20097110:19:57

  • solrconfig.xml

    修改<dataDir></dataDir>标签中的检索数据存放路径。内容如下:

<dataDir>${catalina.home}/solr/db/data</dataDir>

 

 



3、导入和查询:

  • 完全导入:
    http://localhost:8983/solr/db/dataimport?command=full-import
  • 增量导入:
    http://localhost:8983/solr/db/dataimport?command=delta-import
  • 查询
    http://localhost:8983/solr
    点击db,进入一个搜索页面,填入如下内容:

pubtime:[2007-11-16T00:00:00Z TO 2008-11-28T00:00:00Z]

AND

工作;

pubtime desc

    点击搜索,测试。

4xml解析:

一个简单solr查询结果的辅助搜索类,内容如下:



import java.net.URL;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;



import org.dom4j.Document;

import org.dom4j.Node;

import org.dom4j.io.SAXReader;

import org.apache.commons.lang.time.DateUtils;



public class SolrUtils {

private List<Node> docs = new ArrayList<Node>();

private Number numFound = 0;

private Document doc;

public List<Node> getDocs() {

return docs;

}



public Number getNumFound() {

return numFound;

}

@SuppressWarnings("unchecked")

public SolrUtils(String urlString) {

doc = documentFromURL(urlString);

if (doc != null ) {

docs = (List<Node>)doc.selectNodes("/response/result/doc");

numFound = doc.numberValueOf("/response/result/@numFound");

}

}

public Document documentFromURL(String urlString){

try {

SAXReader reader = new SAXReader();

URL url = new URL(urlString);

       doc = reader.read(url);

       return doc;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}



public static String valueOf(Object obj, String name){

return valueOf(obj, "str", name);

}

public static Date dateValueOf(Object obj, String name){

String[] parsePatterns = new String[]{

"yyyy-MM-dd'T'HH:mm:ss'Z'",

"yyyy-MM-dd'T'HH:mm:ss.S'Z'",

"yyyy-MM-dd'T'HH:mm:ss.SS'Z'",

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",

};

try {

return DateUtils.parseDate(valueOf(obj, "date", name), parsePatterns);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

public static String valueOf(Object obj, String type, String name){

String path = "./" + type + "[@name='" + name + "']";

if (obj instanceof Node) {

Node n = (Node)obj;

return n.valueOf(path);

}

return "";

}

public static Number numberValueOf(Object obj, String type, String name){

String path = "./" + type + "[@name='" + name + "']";

if (obj instanceof Node) {

Node n = (Node)obj;

return n.numberValueOf(path);

}

return null;

}

public static void main(String[] args) throws Exception {

String url = "http://localhost:8983/solr/db/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on";

SolrUtils su = new SolrUtils(url);

System.out.println(su.getNumFound());

System.out.println(su.getDocs().size());

for (Node doc : su.getDocs()) {

System.out.println(valueOf(doc, "id"));

System.out.println(valueOf(doc, "title"));

System.out.println(dateValueOf(doc, "pubtime"));

}



}



}



参考资料:

1Apache Solr 的新特性

http://www.ibm.com/developerworks/cn/java/j-solr-update/



2Solr开发经验[]

http://www.jinsehupan.com/blog/?p=25



3slf4j-jdk14-1.5.5.jarslf4j-api-1.5.5.jarsolr-dataimporthandler-1.4-SNAPSHOT.jar

https://svn.apache.org/repos/asf/lucene/solr/trunk/lib/slf4j-jdk14-1.5.5.jar

https://svn.apache.org/repos/asf/lucene/solr/trunk/lib/slf4j-api-1.5.5.jar

http://people.apache.org/repo/m2-snapshot-repository/org/apache/solr/solr-dataimporthandler/1.4-SNAPSHOT/solr-dataimporthandler-1.4-SNAPSHOT.jar



4、本文地址

http://docs.google.com/View?id=ajfmzbdvh8wz_37f4jv46gb







0
0
分享到:
评论

相关推荐

    solr3.5与tomcat的部署配置以及与java项目的集成

    ### Solr 3.5与Tomcat的部署配置及与Java项目的集成 #### 一、Solr 3.5与Tomcat的部署配置 **1. 下载与安装Solr** 首先,需要从官方或其他可信任来源下载Apache Solr 3.5.0。根据描述中的链接(虽然不可用),...

    Solr3.5整合Tomcat

    在企业级应用中,Solr 往往需要与 Web 服务器集成,以实现更高效的服务。在这个场景下,Tomcat 作为一个流行的 Java 应用服务器,常常被用来部署 Solr。下面我们将详细讨论如何将 Solr 3.5 版本整合到 Tomcat 中。 ...

    solr4.7.2服务器tomcat集成

    将Solr与Tomcat集成,可以利用Tomcat的管理和部署能力,为Solr提供一个稳定的运行环境。 集成Solr4.7.2和Tomcat7的步骤主要包括以下几个关键点: 1. **下载与解压**:首先,你需要下载Apache Solr 4.7.2和Tomcat7...

    solr与tomcat整合

    通过以上步骤,你已经成功将Solr集成到Tomcat,并且为Solr添加了中文分词支持,使其能更好地处理中文搜索需求。这使得开发者能够在Web应用程序中利用Solr的强大搜索功能,同时支持中文查询,提高了用户体验。

    Apache Solr(solr-8.11.1.tgz)

    在部署和使用Solr时,了解Solr的生命周期管理、集群配置、备份与恢复策略,以及如何监控和调整性能都是至关重要的。熟悉这些知识点,可以帮助你更好地利用Apache Solr构建高性能的企业级搜索解决方案。

    solr4.9与tomcat8,tomcat7整合

    在Solr 4.9版本中,可以与Jetty或Tomcat这样的Servlet容器进行集成,以实现更灵活的部署。 1. **Solr 4.9与Jetty的直接运行** - 首先,你需要从Apache官网下载Solr 4.9的zip包,并解压。 - 使用CMD命令行,进入...

    配置了solr服务的tomcat

    在本场景中,我们关注的是将 Solr 集成到 Tomcat 服务器上,以便利用其强大的搜索能力。Tomcat 是一个流行的开源 Java 应用服务器,常用于部署 Web 应用程序。下面我们将详细介绍如何配置已集成 Solr 的 Tomcat ...

    Apache Solr and Tomcat6 Search engine

    **Tomcat6与Solr的集成** 1. **部署**: 将Solr的war文件(通常名为`solr.war`)部署到Tomcat6的应用目录下,Tomcat会自动解压并创建一个Solr Web应用程序。每个Solr实例都对应一个特定的目录,包含配置文件和索引。...

    Apache Solr Search

    ### Apache Solr Search:一种强大的开源企业搜索解决方案 #### Apache Solr简介 Apache Solr是一款基于Lucene Java搜索引擎库的企业级搜索服务器。它不仅继承了Lucene的强大功能,还在此基础上进行了扩展,提供了...

    Tomcat8.0与Solr8.0的整合

    在IT领域,尤其是在Java Web开发中,Tomcat和Solr是两个非常重要的工具。Tomcat作为一款开源的Servlet容器,广泛用于部署Java应用,而Solr则是一个强大的全文搜索引擎,适用于构建高效的搜索功能。本教程将详细介绍...

    solr+tomcat项目

    Solr+Tomcat项目整合是将Apache Solr搜索引擎与Apache Tomcat应用服务器结合使用的过程,以便在Web环境中部署和运行Solr服务。Solr是一个基于Lucene的全文搜索服务器,而Tomcat则是一个轻量级Java应用服务器,常用于...

    我的配置成功的solr8+tomcat.zip

    本配置成功案例主要涉及了几个关键点:Solr8的安装与配置、Tomcat9的部署、实时数据库批量更新以及IK中文分词器的集成。 1. **Solr8的安装与配置**: Solr8的安装通常包括下载最新版本的Solr,解压并配置环境变量...

    solr4.9+tomcat+zookeeper集群

    Solr是Apache Lucene项目的一个子项目,是一个高性能、全文本搜索服务器,广泛应用于各种大数据检索场景。在4.9版本中,Solr引入了集群功能,以支持高可用性和可扩展性。在这个集群环境中,Tomcat作为Servlet容器...

    Apache Solr初级教程.docx

    2. **安装中间件**:Solr可以在任何Java中间件上运行,如Apache Tomcat。这里以Tomcat为例,下载并解压Tomcat到指定目录。 3. **下载Solr**:访问Solr官网获取最新版本的Solr包,根据教程中的示例,下载的是Solr 1.4...

    solr-tomcat7

    Solr-Tomcat7 整合详解 在Java Web开发中,Apache Solr是一个非常流行的全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。而Tomcat则是一款轻量级的应用服务器,常用于部署Java Servlet和JavaServer Pages...

    window下tomcat+solr整合

    标题中的“window下tomcat+solr整合”指的是在Windows操作系统环境下,将Apache Tomcat(一个流行的Java Servlet容器)与Apache Solr(一个基于Lucene的全文搜索服务器)进行集成,以便实现高效的全文检索功能。...

    solr+IK分词集成tomcat实现全文检索

    Solr+IK分词集成Tomcat实现全文检索是构建高效搜索引擎的关键步骤,尤其在电子商务等大量数据检索场景中,这一技术的应用尤为重要。本教程将详细阐述如何通过Solr结合IK分词器,在Tomcat服务器上搭建一个功能完备的...

    apache-tomcat-9.0.35-solr7.7.3.rar

    在本场景中,我们讨论的是如何将Apache Solr 7.7.3集成到Apache Tomcat 9.0.35中,并配置安全权限,实现BASIC认证。 Apache Solr是一个强大的、开源的企业级搜索平台,它基于Lucene库,提供全文搜索、命中高亮、...

    solr 3.5 tomcat 整合可直接使用

    **Tomcat集成Solr的步骤** 1. **下载和解压**: 首先,你需要从Apache Solr官方网站获取Solr 3.5的发行包,并将其解压到一个适当的目录。 2. **配置Tomcat**: 确保你的Tomcat服务器已经安装并运行。如果还没有,可以...

Global site tag (gtag.js) - Google Analytics