博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.跟我学solr---使用solrj加入索引
阅读量:6449 次
发布时间:2019-06-23

本文共 3850 字,大约阅读时间需要 12 分钟。

上一章讲了怎么使用solr admin向solrserver加入索引,Solr 是一个独立的企业级搜索应用server。它对外提供类似于 Web-service  API 接口。

用户能够通过 http请求,向搜索引擎server提交一定格式的 XML 文件,生成索引。也能够通过 Http Get 操作提出查找请求,并得到XML 格式的返回结果。

所以我们能够使用httpClient作为client向solrserver加入索引。可是幸运的是,solr为我们提供专门的clientjar包。solrj,我们能够使用该jar包向solrserver提交索引。

首先我们导入相关的包,相关的jar包能够通过下载的solr的压缩包中获取,当中包含:

1.dist/solrj-lib

2.dist/solr-solrj-*.jar

把这些jar包导入到classpath中,我们就能够開始使用solrj了。

HttpSolrServer

HttpSolrServer是用于连接solrserver的类,它的底层实现是依赖apache 的 httpclient 的,以下是连接server的详细代码:
String url = "http://localhost:8080/solr";		HttpSolrServer server = new HttpSolrServer(url);		server.setMaxRetries(1); // defaults to 0. > 1 not recommended.		server.setConnectionTimeout(5000); // 5 seconds to establish TCP		// Setting the XML response parser is only required for cross		// version compatibility and only when one side is 1.4.1 or		// earlier and the other side is 3.1 or later.		server.setParser(new XMLResponseParser()); // binary parser is used by													// default		// The following settings are provided here for completeness.		// They will not normally be required, and should only be used		// after consulting javadocs to know whether they are truly required.		server.setSoTimeout(1000); // socket read timeout		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);

EmbeddedSolrServer

另外。solrj提供第二种不通过http连接solr的方式。直接通过在本地訪问文件的方式连接solr服务。
// Note that the following property could be set through JVM level arguments too  System.setProperty("solr.solr.home", "/home/shalinsmangar/work/oss/branch-1.3/example/solr");  CoreContainer.Initializer initializer = new CoreContainer.Initializer();  CoreContainer coreContainer = initializer.initialize();  EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, "");
假设使用了多个core。能够通过以下的方式。

File home = new File( "/path/to/solr/home" );    File f = new File( home, "solr.xml" );    CoreContainer container = new CoreContainer();    container.load( "/path/to/solr/home", f );    EmbeddedSolrServer server = new EmbeddedSolrServer( container, "core name as defined in solr.xml" );
向solrserver加入数据
连接成功后。我们能够使用server进行数据的提交。

SolrInputDocument doc1 = new SolrInputDocument();		 doc1.addField( "id", "333333333333333", 1.0f );		 doc1.addField( "name", "3333333333333333333", 1.0f );		 doc1.addField( "price", 10 );		 server.add(doc1);		 server.commit();
提交成功后。能够通过solr admin查看索引是否添加了,可是最简单的方式就是调用查询方法,查询一下。

SolrQuery solrQuery = new SolrQuery();		solrQuery.setQuery("q=3333333333333333333");		QueryResponse queryResponse= server.query(solrQuery);			System.out.println(queryResponse.getResults().get(0).getFieldValue("name"));
向solr服务加入pojo的数据

首先我们须要新建一个java bean。

public class Item {		@Field    private String id;        @Field    private String category;    @Field    private List
features; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public List
getFeatures() { return features; } public void setFeatures(List
features) { this.features = features; } }
向solr加入数据。

Item item = new Item();		item.setId("201404300001");		item.setCategory("category");		item.setFeatures(Arrays.asList("feature1","feature2","feature3"));		server.addBean(item);		server.commit();
搜索一下,验证是否加入成功。

SolrQuery solrQuery = new SolrQuery();		solrQuery.setQuery("q=feature1");		QueryResponse queryResponse= server.query(solrQuery);			List
items = queryResponse.getBeans(Item.class); System.out.println(items.get(0).getCategory());

转载地址:http://bwlwo.baihongyu.com/

你可能感兴趣的文章
springCloud学习1(集中式配置管理)
查看>>
React-Amap-HOC组件封装
查看>>
我的友情链接
查看>>
node.js操作MySQL数据库
查看>>
oracle常用字段类型
查看>>
mapreduce/spark/storm/Tez 框架
查看>>
20个简化开发任务的JavaScript库
查看>>
cocos2dx通过Jni调用Android的Java层代码(上)
查看>>
Junit 小案列 基本注解
查看>>
SpringAop的使用
查看>>
自由源于自信,自信源于自律
查看>>
Linux安装与基础命令
查看>>
quick UIInput 的使用
查看>>
远程管理
查看>>
免费(学习)使用的数据库
查看>>
锁定10月10日,九州云Animbus7.0与你不见不散
查看>>
事务 C#中TransactionScope的使用方法和原理
查看>>
如何在NGINX中重定向一个网址(301 跳转)
查看>>
CentOS 6.4 关闭 selinux
查看>>
Android数据存储方式
查看>>