Apache solr使用

一、Solr介绍

最近在一个项目中做了一个全文检索的功能,刚开始本来打算用Apache Lucene去实现,毕竟之前对Lucene有一点了解,但是在网上看技术类文章时看见了别人介绍Apache Solr,感觉挺好的,

还是一个开源的搜索服务器,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的,高亮显示搜索结果,有自带的中文分词技术。

二、Solr配置

第一步:下载Solr, http://www.apache.org/dyn/closer.cgi/lucene/solr

解压到我下载的是3.6.1版本,把它解压到E盘。E:/apache-solr-3.6.1

第二步:修改conf\server.xml,把8080端口所在的那一行修改如下:

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

connectionTimeout="20000"

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

增加了URIEncoding="UTF-8"这一配置。

第三步:配置solr

在tomcat的conf目录下,增加 Catalina\localhost\solr.xml 文件,如果conf文件夹下没有Catalina,新建它。

solr.xml内容:

<Context docBase="E:/apache-solr-3.6.1/dist/apache-solr-3.6.1.war" debug="0" crossContext="true" >

<Environment name="solr/home" type="java.lang.String" value="E:/apache-solr-3.6.1/example/solr" override="true" /></Context>

第四步:启动Tomcat。输入http://localhost:8080/solr/ 出现欢迎界面,表示成功。

三、solr使用

在调用Solr服务时使用了apache-solr-solrj-3.6.1.jar,Apache 已经为我们提供了 Solrj 这个工具,我们只需要简单的导入相关包,使用其简单的 API 就可以轻松对 solr 进行操作了

建立与Solr服务的连接

String url = "http://10.13.17.38:8983/solr";

CommonsHttpSolrServer server = new CommonsHttpSolrServer(url);

server.setSoTimeout(3000); // socket read timeout

server.setConnectionTimeout(1000);

server.setDefaultMaxConnectionsPerHost(1000);

server.setMaxTotalConnections(10);

server.setFollowRedirects(false); // defaults to false

server.setAllowCompression(true);

server.setMaxRetries(1);

搜索条件的设置

SolrQuery query = new SolrQuery();

query.setQuery("tags:t5 AND t7");

query.addField("auction_id");

query.setStart(0);

query.setRows(4);

query.addSortField("auction_id", SolrQuery.ORDER.desc);

query.addSortField("auction_point", SolrQuery.ORDER.asc);

// 设置高亮

query.setHighlight(true); // 开启高亮组件

query.addHighlightField("content");// 高亮字段

query.addHighlightField("titleStr");// 高亮字段

query.setHighlightSimplePre("<font color=‘red‘>");// 标记,高亮关键字前缀

query.setHighlightSimplePost("</font>");// 后缀

query.setHighlightSnippets(3);// 结果分片数,默认为1

query.setHighlightFragsize(70);// 每个分片的最大长度,默认为100

加入中文分词

修改solr\conf\schema.xml文件,在文件中加入如下字段类型,

<fieldType name="text_zh" class="solr.TextField"

positionIncrementGap="100">

<analyzer type="index">

<tokenizer

class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />

</analyzer>

<analyzer type="query">

<tokenizer

class="org.wltea.analyzer.solr.IKTokenizerFactory" useSmart="false" />

</analyzer>

</fieldType>

然后再你需要分词的字段使用此类型

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

时间: 2024-08-28 14:01:46

Apache solr使用的相关文章

玩转大数据系列之Apache Pig如何与Apache Solr集成(二)

散仙,在上篇文章中介绍了,如何使用Apache Pig与Lucene集成,还不知道的道友们,可以先看下上篇,熟悉下具体的流程. 在与Lucene集成过程中,我们发现最终还要把生成的Lucene索引,拷贝至本地磁盘,才能提供检索服务,这样以来,比较繁琐,而且有以下几个缺点: (一)在生成索引以及最终能提供正常的服务之前,索引经过多次落地操作,这无疑会给磁盘和网络IO,带来巨大影响 (二)Lucene的Field的配置与其UDF函数的代码耦合性过强,而且提供的配置也比较简单,不太容易满足,灵活多变的

How to Install Apache Solr 4.5 on CentOS 6.4

By Shay Anderson on October 2013 Knowledge Base  /  Linux  /  How to Install Apache Solr 4.5 on CentOS 6.4 In this tutorial I explain how to install Apache Solr 4.5 on CentOS 6.4. In all the examples below I am using the root user, if you are not you

01 Apache Solr:提升检索体验 为什么是Solr

背景: 最近开发一个大型的仓储管理平台项目,项目的前身是无数个版本的历史悠久的基于CS模式的Windows桌面程序.然后对于每一个客户,我们可能需要为之定制比较个性化的特殊功能.于是,有一个核心研发团队,以一两年为周期开发一个核心功能版本的软件:然后拿出去推广销售,每每销售成功,做售前的同事都是拿了一大堆定制化的需求回来的:然后一场在核心功能上的定制和个性化扩展就开始了,完成开发就可以去客户现场实施了:最后,就会有部分维护的同事将这个客户的系统纳入他们的日常工作清单中.周而复始.诚然,这种方式在

Apache Solr

官网:http://lucene.apache.org/solr/ 最新版本下载:http://www.apache.org/dyn/closer.cgi/lucene/solr/ 历史版本下载:http://archive.apache.org/dist/lucene/solr/ Solr 官方Wiki加速镜像: http://wiki.apache.org/solr/ Solr 官方Wiki: https://cwiki.apache.org/confluence/display/solr/

Apache Solr 之 使用SolrJ操作索引库

Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互.最基本的功能就是管理Solr索引,包括添加.更新.删除和查询等.对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能.如果你的应用比较复杂,可以扩展Solrj来满足需要. 使用 SolrJ操作索引库: package com.hcm.solr.test; import java.io.IOExce

Apache Solr 之 环境搭建

 Apache Solr 之 环境搭建 假定$SOLR_HOME为D:\Program Files\solr-tomcat\solr 步骤1,从solr-4.1.0\dist复制solr-4.1.0.war到$SOLR_HOME并重命名为solr.war: 步骤2,将solr-4.1.0\example\solr复制到$SOLR_HOME目录: 步骤3,在tomcat/conf/catalina/localhost下新建solr.xml,如下: <Context docBase="D:/P

Apache Solr vs Elasticsearch

http://solr-vs-elasticsearch.com/ Apache Solr vs Elasticsearch The Feature Smackdown API Feature Solr 6.2.1 ElasticSearch 5.0 Format XML, CSV, JSON JSON HTTP REST API Binary API   SolrJ  TransportClient, Thrift (through a plugin) JMX support  ES spec

Apache solr(二)

上一篇试着进行了solr的安装和配置,以及如何solr的检索,今天试着简单的将solr连接MySQL数据库(才尝试了单表.一对多和多对多的还有待研究) 1.MySQL的目录结构 2.新建一个democore 3.在solr服务器http://localhost:8983/solr可视化页面上新建core和field,field和MySQL数据库的字段字段一一对应 4.配置solrconfig.xml,将data-config.xml配置在我们定义的core里,其中,data-config.xml

Apache solr(一)

概念:Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr 中存储的资源是以 Document 为对象进行存储的.每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性.Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件中使用:<uniqueKey>id</uniqueKey>

org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Internal Server Error 错误

Solr报错: { "responseHeader": { "status": 500, "QTime": 11 }, "error": { "trace": "java.lang.RuntimeException\r\n\tat org.apache.solr.search.ExtendedDismaxQParser$ExtendedDismaxConfiguration.<init>