1.环境

下载软件

名称

地址

solr-integration-strategies-gh-pages.zip

https://github.com/carrot2/solr-integration-strategies

solr-4.7.1

 

apache-tomcat-6.0.39

 

carrot2-webapp-3.9.2.war

 

 

2.启动Solr

使用Jetty启动solr

F:\solr\solr-4.7.1\example>java -Dsolr.solr.home=../../carrot2-3.8.0-4.7.1/solr-home -jar start.jar

 

访问http://localhost:8983/solr/#/


 

3.导入数据

使用solr-docs中post.jar向solr中导入数据

F:\solr\solr-integration-strategies-gh-pages\solr-docs>java -jar post.jar 20newsgroups

 


 

4.聚类集成到Solr中


 

carrot2提供的solrconfig.xml中的对搜索结果进行了配置

<lib dir="../../../solr-4.7.1/contrib/clustering/lib/" regex=".*\.jar" />

<lib dir="../../../solr-4.7.1/dist/" regex=".*solr-clustering-.*\.jar" />

 

<!-- Declare a clustering search component, configure a single engine (Lingo algorithm) -->

<searchComponent name="clustering" enable="true" class="solr.clustering.ClusteringComponent" >

<lst name="engine">

<str name="name">default</str>

<str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>

<str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>

<str name="carrot.lexicalResourcesDir">clustering/carrot2</str>

<str name="MultilingualClustering.defaultLanguage">ENGLISH</str>

</lst>

</searchComponent>

 

配置

config1_1(search handler):

<requestHandler name="/config1_1" class="solr.SearchHandler">

<lst name="defaults">

<str name="defType">edismax</str>

<str name="qf">title^1.5 content^1.0</str>

<str name="rows">100</str>

<str name="fl">*,score</str>

 

<!-- Enable clustering. -->

<bool name="clustering">true</bool> <!-- enable clustering -->

<bool name="clustering.results">true</bool> <!-- cluster search results, not the collection -->

<str name="clustering.engine">default</str> <!-- use the default engine -->

 

<!-- Solr-to-Carrot2 field mapping. -->

<str name="carrot.url">name</str> <!-- unique ID field, doesn't have to be an URL -->

<str name="carrot.title">title</str> <!-- document title field. -->

<str name="carrot.snippet">content</str> <!-- document "contents" field -->

</lst>

 

<!-- Attach clustering as the last processing component. -->

<arr name="last-components">

<str>clustering</str>

</arr>

</requestHandler>

 

config1_2 (search handler returning a subset of fields)

<requestHandler name="/config1_2" class="solr.SearchHandler">

<lst name="defaults">

<str name="defType">edismax</str>

<str name="qf">title^1.5 content^1.0</str>

<str name="rows">100</str>

 

<!--只显示name,title,content太大,不显示-->

<str name="fl">name,title,score</str>

 

<bool name="clustering">true</bool>

<bool name="clustering.results">true</bool>

<str name="clustering.engine">default</str>

 

<str name="carrot.url">name</str>

<str name="carrot.title">title</str>

<str name="carrot.snippet">content</str>

</lst>

 

<arr name="last-components">

<str>clustering</str>

</arr>

</requestHandler>

 

config1_3(search handler returning contextual snippets)

<requestHandler name="/config1_3" class="solr.SearchHandler">

<lst name="defaults">

<str name="defType">edismax</str>

<str name="qf">title^1.5 content^1.0</str>

<str name="rows">100</str>

 

<str name="fl">name,title,score</str>

 

<!—对内容字段高亮 -->

<bool name="hl">true</bool>

<str name="hl.fl">content</str>

<!-- Disable highlight wrapping. -->

<str name="hl.simple.pre"><!-- --></str>

<str name="hl.simple.post"><!-- --></str>

<str name="f.content.hl.snippets">3</str> <!-- max 3 snippets of 200 chars. -->

<str name="f.content.hl.fragsize">200</str>

 

<bool name="clustering">true</bool>

<bool name="clustering.results">true</bool>

<str name="clustering.engine">default</str>

 

<str name="carrot.url">name</str>

<str name="carrot.title">title</str>

<str name="carrot.snippet">content</str>

</lst>

 

<arr name="last-components">

<str>clustering</str>

</arr>

</requestHandler>

 

config2_1(search handler clustering query-in-context snippets)

<requestHandler name="/config2_1" class="solr.SearchHandler">

<lst name="defaults">

<str name="defType">edismax</str>

<str name="qf">title^1.5 content^1.0</str>

<str name="rows">100</str>

 

<str name="fl">name,title,score</str>

 

<bool name="clustering">true</bool>

<bool name="clustering.results">true</bool>

<str name="clustering.engine">default</str>

 

<str name="carrot.url">name</str>

<str name="carrot.title">title</str>

<str name="carrot.snippet">content</str>

 

<!--只聚类高亮的段 -->

<str name="carrot.produceSummary">true</str>

<!--只分析内容中三段 -->

<str name="carrot.summarySnippets">3</str>

</lst>

 

<arr name="last-components">

<str>clustering</str>

</arr>

</requestHandler>

 

访问

http://localhost:8983/solr/example/config1_1?q=memory&wt=xml&indent=true

 

5.集成solr到carrot2的网站

准备Tomcat和carrot2-webapp-3.9.2

将carrot2-webapp-3.9.2.war解压,修改F:\solr\apache-tomcat-6.0.39\webapps\carrot2-webapp-3.9.2\WEB-INF\suites中suite-webapp.xml文件

<component-suite>

<sources>

<source component-class="org.carrot2.source.solr.SolrDocumentSource" id="solr"

attribute-sets-resource="source-solr-attributes.xml">

<label>Solr</label>

<title>Solr Search Engine</title>

<icon-path>icons/solr.png</icon-path>

<mnemonic>s</mnemonic>

<description>Solr document source queries an instance of Apache Solr search engine.</description>

<example-queries>

<example-query>test</example-query>

<example-query>solr</example-query>

</example-queries>

</source>

</sources>

<!-- Algorithms -->

<include suite="algorithm-passthrough.xml"></include>

</component-suite>

 

修改source-solr-attributes.xml文件

<attribute-sets default="overridden-attributes">

<attribute-set id="overridden-attributes">

<value-set>

<label>overridden-attributes</label>

<attribute key="SolrDocumentSource.serviceUrlBase">

<value value="http://localhost:8983/solr/example/config1_2"/>

</attribute>

<attribute key="SolrDocumentSource.solrSummaryFieldName">

<value value="content"/>

</attribute>

<attribute key="SolrDocumentSource.solrTitleFieldName">

<value value="title"/>

</attribute>

<attribute key="SolrDocumentSource.solrUrlFieldName">

<value value="name"/>

</attribute>

<!-- Proxy clusters from Solr. Link on 'name' field. -->

<attribute key="SolrDocumentSource.solrIdFieldName">

<value value="name"/>

</attribute>

<attribute key="SolrDocumentSource.readClusters">

<value value="true"/>

</attribute>

</value-set>

</attribute-set>

</attribute-sets>

 

6.启动Tomcat

将carrot2-webapp-3.9.2放到tomcat的webapps下并启动tomcat

 

访问地址http://localhost:8080/carrot2-webapp-3.9.2

 

搜索memory

 

Carrot2的图形界面

 

Apache SOLR and Carrot2集成的更多相关文章

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

    散仙,在上篇文章中介绍了,如何使用Apache Pig与Lucene集成,还不知道的道友们,可以先看下上篇,熟悉下具体的流程. 在与Lucene集成过程中,我们发现最终还要把生成的Lucene索引,拷 ...

  2. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  3. [Solr] (源) Solr与MongoDB集成,实时增量索引

    一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中,直接向Solr服务发送请求,返回xml.js ...

  4. Solr与MongoDB集成,实时增量索引

    Solr与MongoDB集成,实时增量索引 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中, ...

  5. Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  6. Apache Solr Velocity模板注入RCE漏洞复现

    Apache Solr Velocity模板注入RCE漏洞复现 一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通 ...

  7. 26.Apache Solr RCE

    多事之秋,刚爆出来shiro的RCE,紧接着solr服务器就出了RCE 自从漏洞爆出来已经一段时间,复现漏洞多如牛毛,我这里来水一篇 漏洞简介 什么是solr服务器? Solr是一个独立的企业级搜索应 ...

  8. 【漏洞复现】Apache Solr via Velocity template远程代码执行

    0x01 概述 Solr简介 Apache Solr 是一个开源的企业级搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr ...

  9. CVE-2019-0193 Apache solr velocity模块漏洞

    Solr简单介绍 Solr是建立在Apache Lucene ™之上的一个流行.快速.开放源代码的企业搜索平台. Solr具有高度的可靠性,可伸缩性和容错能力,可提供分布式索引,复制和负载平衡查询,自 ...

随机推荐

  1. jquery学习笔记(五):AJAX

    内容来自[汇智网]jquery学习课程 5.1 ajax AJAX 是与服务器交换数据的艺术,它在不重载全部页面的情况下,实现了对部分网页的更新. AJAX = 异步 JavaScript 和 XML ...

  2. How to Hide Apache Tomcat Version Number from Error Pages

    1. 进入tomcat lib目录 cd /usr/local/tomcat7/lib 2. 解压catalina.jar jar xvf catalina.jar 3. 修改ServerInfo.p ...

  3. 使用Navicat连接管理远程linux服务器上的mysql数据库

    第一步:选择连接,选择mysql 第二步:填写下面弹出框的信息:连接名随便写,主机名或IP地址:写上服务器的ip.  端口不变  用户名不变.  密码:输入服务器数据库的密码12345678. 接着测 ...

  4. Invalid bound statement (not found)之idea打包maven项目问题

    开发的一个maven项目,之前在Eclipse中,maven打包部署完后一切正常,后来转到idea中开发,再用maven打包部署后, 一直报 Invalid bound statement (not ...

  5. 初识OpenCV-Python - 003:Mouse as a paint-brush

    此次学习了如何在OpenCV中使用鼠标事件.主要使用cv2.setMouseCallback()函数来调用鼠标事件. 首先,鼠标有如下事件: >>> import cv2>&g ...

  6. Hadoop2.7.1配置NameNode+ResourceManager高可用原理分析

    关于NameNode高可靠需要配置的文件有core-site.xml和hdfs-site.xml 关于ResourceManager高可靠需要配置的文件有yarn-site.xml 逻辑结构: Nam ...

  7. Django中static文件的引入

    1. 在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/'  下边 STATICFILES_DIRS = [ ...

  8. Luogu P2458 [SDOI2006]保安站岗(树形dp)

    P2458 [SDOI2006]保安站岗 题意 题目描述 五一来临,某地下超市为了便于疏通和指挥密集的人员和车辆,以免造成超市内的混乱和拥挤,准备临时从外单位调用部分保安来维持交通秩序. 已知整个地下 ...

  9. Entity Framework Code First 模式-建立一对一联系

    使用的例子为教室(ClassRoom),教室里的多媒体设备(Device),一个教室里有一套多媒体设备,一套多媒体设备只放在一个教室里. 1.Data Annotations方式 需要在任意一方的主键 ...

  10. [JZOJ3187]【GDOI2013模拟8】的士

    题目 描述 题目大意 在一个数轴上,有些人要从某个点到达另一个点. 出租车从最左端出发,将所有人送到它们的目的地,最终到达最右边的点. 出租车只能做一个乘客,并且可以在图中将乘客丢下. 问最短时间. ...