- 浏览: 257857 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (289)
- java (72)
- oracle (3)
- mysql (5)
- spring (28)
- hibernate (2)
- osgi (0)
- linux (2)
- ExtJs (1)
- jvm (0)
- mybatis (7)
- 分布式 (11)
- MINA (6)
- apache+tomcat (13)
- js+htm (7)
- android (44)
- http (1)
- hbase+hdoop (0)
- memcache (13)
- search (27)
- 部署及性能 (12)
- mongoDB (2)
- 多线程 (12)
- 安全管理验证 (9)
- struts (1)
- webservice (0)
- easyUI (1)
- spring security (16)
- pattern (6)
- 算法 (2)
最新评论
-
lzh8189146:
CommonsHttpSolrServer这个类,现在是不是没 ...
CommonsHttpSolrServer -
xiaochanzi:
我按照你的方法试了下,tomcat6可以发布,但是访问任何网页 ...
基于内嵌Tomcat的应用开发 -
phoneeye:
麻烦你,如果是抄来的文章,请给出来源。谢谢
ant 两则技巧 -
neverforget:
转载不注明出处
Spring Security3.1登陆验证 替换 usernamepasswordfilter -
liang1022:
若不使用eclipse ,如何在命令行下 运行服务端程序 ?
WebService CXF学习(入门篇2):HelloWorld
http://www.dzxiaoshuo.com
相信很多人,在准备提交数据让solr建立索引的那刻,很纳闷,尽管看了不少网上的一些文章,但是我想依然还是有不少不理解的地方。
比如提交一个xml,采用post方式,尽管有些文章说了可以采用httpclient。但是我那个时候,还不是很理解,当然现在看来其实也没有什么了。但是对于一个刚入门solr的初学者,我想讲讲关于solr1.3的 solrj( sorlr J 目前使用二进制的格式作为默认的格式。对于solr1.2的用户通过显示的设置才能使用XML格式。)!
先上一个例子:
上面这段代码的意思是:利用for提交10000个document,并打印提交10000所需的时间。
1》CommonsHttpSolrServer 使用HTTPClient 和solr服务器进行通信。
2》CommonsHttpSorlrServer 允许设置链接属性。
3》实现SolrServer接口的另一个类:EmbeddedSorrServer,它不需要http连接。
4》在构造document的时候,可以一个一个添加到solrServer,也可以构建一个包含document的Collection,将Collection添加到solrServer,然后commit。
5》也可以构造一个跟document匹配的JavaBean进行提交
使用 java 注释创建java bean。@Field ,可以被用在域上,或者是setter方法上。如果一个域的名称跟bean的名称是不一样的,那么在java注释中填写别名,具体的,可以参照下面的域categories
java注释也可以使用在setter方法上,如下面的例子:
这里应该要有一个相对的,get方法(没有加java注释的)来读取属性
添加给solr
将多个bean提交给solr
注意: 你可以重复使用SolrServer,这样可以提高性能。
6》
提交一个document,采用更新方式,注意:
7》
这是一个查询方法。关键字:“编程”。关于查询的关键字,请参见slor wikihttp://wiki.apache.org/solr/QueryParametersIndex,或等待我的博客更新,在后面会有篇文章详细讲这个问题!
8》给solr的索引文件手动进行优化,
9》solrJ 提供了一组API,来帮助我们创建查询,下面是一个faceted query的例子。
Java代码
所有的 setter/add 方法都是返回它自己本身的实例,所以就像你所看到的一样,上面的用法是链式的。
相信很多人,在准备提交数据让solr建立索引的那刻,很纳闷,尽管看了不少网上的一些文章,但是我想依然还是有不少不理解的地方。
比如提交一个xml,采用post方式,尽管有些文章说了可以采用httpclient。但是我那个时候,还不是很理解,当然现在看来其实也没有什么了。但是对于一个刚入门solr的初学者,我想讲讲关于solr1.3的 solrj( sorlr J 目前使用二进制的格式作为默认的格式。对于solr1.2的用户通过显示的设置才能使用XML格式。)!
先上一个例子:
- public static final String SOLR_URL = "http://localhost/solr/core0";
- public static void commit() {
- Date date = new Date();
- SolrServer solr = null;
- try {
- solr = new CommonsHttpSolrServer(SOLR_URL);
- } catch (MalformedURLException e1) {
- e1.printStackTrace();
- }
- for (int i = 0; i < 10000; i++) {
- SolrInputDocument sid = new SolrInputDocument();
- sid.addField("id", i);
- sid.addField("name", "struts+hibernate+spring 开发大全" + i);
- sid.addField("summary", "三种框架的综合应用" + i);
- sid.addField("author", "李良杰" + i);
- sid.addField("date", new Date());
- sid.addField("content", "高级应用类书籍" + i);
- sid.addField("keywords", "SSH" + i);
- try {
- solr.add(sid);
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (SolrServerException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- System.out.println(i);
- if (i == 999)
- System.out.println((new Date().getTime() - date.getTime()) / 60000 + "分钟");
- }
- try {
- solr.commit();
- } catch (SolrServerException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
上面这段代码的意思是:利用for提交10000个document,并打印提交10000所需的时间。
1》CommonsHttpSolrServer 使用HTTPClient 和solr服务器进行通信。
2》CommonsHttpSorlrServer 允许设置链接属性。
- server.setSoTimeout(1000); // socket read timeout
- server.setConnectionTimeout(100);
- server.setDefaultMaxConnectionsPerHost(100);
- server.setMaxTotalConnections(100);
- server.setFollowRedirects(false); // defaults to false
- // allowCompression defaults to false.
- // Server side must support gzip or deflate for this to have any effect.
- server.setAllowCompression(true);
- server.setMaxRetries(1); // defaults to 0. > 1 not recommended.
3》实现SolrServer接口的另一个类:EmbeddedSorrServer,它不需要http连接。
4》在构造document的时候,可以一个一个添加到solrServer,也可以构建一个包含document的Collection,将Collection添加到solrServer,然后commit。
5》也可以构造一个跟document匹配的JavaBean进行提交
使用 java 注释创建java bean。@Field ,可以被用在域上,或者是setter方法上。如果一个域的名称跟bean的名称是不一样的,那么在java注释中填写别名,具体的,可以参照下面的域categories
- import org.apache.solr.client.solrj.beans.Field;
- public class Item {
- @Field
- String id;
- @Field("cat")
- String[] categories;
- @Field
- List<String> features;
- }
java注释也可以使用在setter方法上,如下面的例子:
这里应该要有一个相对的,get方法(没有加java注释的)来读取属性
- Item item = new Item();
- item.id = "one";
- item.categories = new String[] { "aaa", "bbb", "ccc" };
添加给solr
将多个bean提交给solr
注意: 你可以重复使用SolrServer,这样可以提高性能。
6》
- public static void update() {
- SolrServer solrServer = null;
- try {
- solrServer = new CommonsHttpSolrServer(SOLR_URL);
- } catch (MalformedURLException e) {
- e.printStackTrace();
- }
- UpdateRequest updateRequest = new UpdateRequest();
- SolrInputDocument sid = new SolrInputDocument();
- sid.addField("id", 100000);
- sid.addField("name", "struts+hibernate+spring 开发大全");
- sid.addField("summary", "三种框架的综合应用");
- sid.addField("author", "李良杰");
- sid.addField("date", new Date());
- sid.addField("content", "高级应用类书籍");
- sid.addField("keywords", "SSH");
- updateRequest.setAction(UpdateRequest.ACTION.COMMIT, false, false);
- updateRequest.add(sid);
- try {
- UpdateResponse updateResponse = updateRequest.process(solrServer);
- System.out.println(updateResponse.getStatus());
- } catch (SolrServerException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
提交一个document,采用更新方式,注意:
7》
- public static void query() {
- SolrServer solr = null;
- try {
- solr = new CommonsHttpSolrServer(SOLR_URL);
- } catch (MalformedURLException e) {
- e.printStackTrace();
- return;
- }
- // http://localhost:8983/solr/spellCheckCompRH?q=epod&spellcheck=on&spellcheck.build=true
- ModifiableSolrParams params = new ModifiableSolrParams();
- params.set("qt", "/spellCheckCompRH");
- params.set("q", "编程");
- params.set("spellcheck", "on");
- params.set("spellcheck.build", "true");
- QueryResponse response = null;
- try {
- response = solr.query(params);
- } catch (SolrServerException e) {
- e.printStackTrace();
- return;
- }
- System.out.println("response = " + response);
- }
这是一个查询方法。关键字:“编程”。关于查询的关键字,请参见slor wikihttp://wiki.apache.org/solr/QueryParametersIndex,或等待我的博客更新,在后面会有篇文章详细讲这个问题!
8》给solr的索引文件手动进行优化,
9》solrJ 提供了一组API,来帮助我们创建查询,下面是一个faceted query的例子。
Java代码
- SolrServer server = getSolrServer();
- SolrQuery solrQuery = new SolrQuery().setQuery("ipod").setFacet(true).setFacetMinCount(1).setFacetLimit(8). addFacetField("category").addFacetField("inStock");
- QueryResponse rsp = server.query(solrQuery);
所有的 setter/add 方法都是返回它自己本身的实例,所以就像你所看到的一样,上面的用法是链式的。
发表评论
-
提高nutch爬取效率
2012-06-08 12:47 943提高nutch爬取效率 分类 ... -
CommonsHttpSolrServer
2012-03-28 09:31 2082CommonsHttpSolrServer ... -
利用SOLR搭建企业搜索平台 之十(数据库数据导入到solr)
2012-03-28 09:31 744利用SOLR搭建企业搜索平台 之十(数据库数据导 ... -
利用SOLR搭建企业搜索平台 之九(solr的查询语法)
2012-03-28 09:31 836利用SOLR搭建企业搜索平台 之九(solr的查 ... -
利用SOLR搭建企业搜索平台 之八(solr 实现去掉重复的搜索结果,打SOLR-236_collapsing.patch补丁)
2012-03-28 09:31 980引用Bory.Chanhttp://blog.chenlb.c ... -
Solr solrconfig.xml的翻译
2012-03-13 08:23 896Solr solrconfig.xml的翻译 ... -
使用Apache Solr对数据库建立索引
2012-03-13 08:23 861使用Apache Solr对数据库建立索引 ( ... -
解决DataImportHandler从数据库导入大量数据而内存溢出的问题
2012-03-13 08:23 930解决DataImportHandler从数据库导入大 ... -
Solr 创建索引的原理 源码分析
2012-03-13 08:24 1160Solr 创建索引的原理 源码分析 (2011 ... -
Solr Replication (复制) 索引和文件的工作机制
2012-03-13 08:24 811Solr Replication (复制) 索引和文 ... -
Solr 查询中fq参数的解析原理
2012-03-14 08:13 820Solr 查询中fq参数的解析原理 (2011- ... -
Solr 分词器(analyzer)是怎么传到Luence的
2012-03-14 08:13 1091Solr 分词器(analyzer)是怎么传到Lue ... -
SOLR的分布式部署
2012-03-14 08:14 1032转载:http://blog.sina.com.cn/s/bl ... -
Solr 删除数据的几种方式
2012-02-22 08:40 1005转载:Solr 删除数据的几种方式 发表于:2010 ... -
Solr Data Import 快速入门
2012-02-26 12:12 829转载:Solr Data Import 快速入门 发 ... -
使用 solr php 的输出
2012-02-22 08:41 850转载:使用 solr php 的输出 发表于:200 ... -
Solr Multicore 结合 Solr Distributed Searching 切分大索引来搜索
2012-02-26 12:13 788Solr Multicore 结合 Solr Dist ... -
Solr Multicore 试用小记
2012-02-26 12:13 752Solr Multicore 试用小记 转载: ... -
Solr1.4.0源码分析二 Solr分布式搜索中URL的正确用法和原理
2012-02-26 12:13 984Solr1.4.0源码分析二 Solr分布式搜索 ... -
lucene应用
2012-02-19 13:24 709转载:http://sacredlove.itey ...
相关推荐
本项目实践聚焦于利用Solrj开发一个支持主从复制的Solr搜索引擎服务,并通过Dubbo组件实现服务的分布式部署与调用。以下将详细阐述这个项目的重点内容和关键技术。 首先,Solr是Apache软件基金会的一个开源项目,它...
Solr是Apache Lucene项目下的一个企业级搜索服务器,它提供了全文检索、高亮显示、 faceted search(分面搜索)以及实时分析等功能。本文将详细介绍如何搭建Solr环境,并解析其配置文件,同时也会涉及SolrJ客户端的...
Solr集群搭建是一个复杂但重要的过程,用于实现大型、高可用性和可扩展性的搜索解决方案。Apache Solr是一款基于Lucene的开源全文搜索引擎,它提供了分布式搜索、近实时处理、多字段排序等功能。以下是对Solr集群...
Apache Solr是一款开源的企业级搜索平台,由Apache软件基金会开发,它提供了全文检索、命中高亮、拼写检查、Faceted Search(分面搜索)等多种功能,广泛应用于网站内容搜索、电商商品检索等领域。本文将详细介绍...
这可能包括分片和复制策略以分散负载,使用倒排索引来加速查询,以及利用Solr的缓存机制。 总的来说,这个压缩包提供了一个全面的学习资源,涵盖了从Solr的基本安装和配置,到实际的索引操作、查询构建,再到系统的...
Solr是一个独立的基于全文检索的企业级搜索应用服务器,它支持通过HTTP利用XML将文档加载到搜索集合中,用户可以通过HttpGet操作发送查找请求,并得到搜索的返回结果。在Java后台开发中,Solr通过SolrJ客户端库与...
Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款...通过理解其核心概念、特性以及应用场景,我们可以充分利用Solr来提升系统的搜索性能,优化用户体验。
Solr全文检索环境搭建 Apache Solr是一款基于Java的开源搜索服务器,专为高效全文检索、拼写检查、高亮显示结果以及...记住,实践是掌握技术的关键,不断尝试和探索,你将能更好地利用Solr提升你的应用的搜索体验。
总的来说,Solr-7.0.0是一个强大且灵活的搜索平台,适合处理大量数据的全文搜索场景。通过与Redis集成,可以进一步优化性能,提高用户体验。用户可以依据自己的需求,配置索引、调整集群结构,以实现高效、可靠的...
总结这些信息,我们可以知道这是一个基于Maven构建的Java项目,它与Apache Solr搜索引擎交互,可能利用SolrJ库进行索引管理和查询操作。同时,项目中可能包含对Jade模板引擎的支持,用于生成动态网页内容。作为一个...
Apache Solr是一个开源的企业级搜索平台,用于构建高效、可扩展的全文检索应用。这个名为"apache-solr-3.5.0.jar"的压缩包包含两个关键组件:`apache-solr-core-3.5.0.jar`和`apache-solr-solrj-3.5.0.jar`,它们...
Solr是Apache软件基金会开发的一款高性能、全文搜索引擎,它提供了分布式搜索、索引和分析大量数据的能力。在本文中,我们将深入探讨如何自己搭建一个Solr环境,以及在这个过程中涉及的关键知识点。 首先,我们需要...
- SolrJ搜索:通过SolrJ执行搜索请求,获取和解析查询结果。 【Solr案例分析】 - 需求分析:在实际项目中,需要明确搜索功能的需求,例如搜索速度、准确性、用户体验等。 - 架构设计:设计Solr的部署架构,考虑...
Solr 基于 Java 开发,利用 Lucene 作为其核心搜索引擎库。 - **特点**: - 可扩展性和高度可配置性。 - 高度优化的 Lucene 性能。 - 提供了丰富的查询语言和强大的全文检索功能。 #### Solr与Lucene的区别 - *...
Apache Solr是一款开源的企业级全文搜索引擎,由Apache软件基金会开发,基于Java语言,具有高效、可扩展的特点。它为大型、分布式搜索应用提供了强大的支持,包括文档检索、拼写建议、高亮显示搜索结果、近似搜索等...
- **1.2.5 缓存**:Solr利用多种缓存机制来提高搜索响应速度,例如查询结果缓存、文档缓存等。 - **1.2.6 复制**:Solr支持主/从架构,通过复制功能可以在多个服务器间同步索引数据,确保数据的一致性和冗余。 - **...
3. **编写代码**:利用 SolrJ API 实现数据索引和搜索功能。 ```java import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client...
#### 五、使用 solrj 管理 Solr 集群 - **概述**:solrj 是 Java API 形式提供的客户端库,允许开发者通过编程方式与 Solr 交互。 - **应用场景**: - **索引文档**:使用 solrj 可以方便地向 Solr 集群添加、删除...
利用Solr实现商品搜索功能 Solr是一款基于Lucene的全文搜索服务器,提供了丰富的查询语言,实现了可配置、可扩展,并对索引、搜索性能进行了优化。Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务...
- **搜索建议**:利用Solr的 autocomplete 功能,可以提供实时的搜索建议,提升用户体验。 - **分组统计**:通过Grouping功能,可以对搜索结果进行分类统计,便于数据分析。 - **自动聚类**:Solr的Clustering...