上一章讲了怎么使用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<String> 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<String> getFeatures() {
return features;
} public void setFeatures(List<String> 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<Item> items = queryResponse.getBeans(Item.class);
System.out.println(items.get(0).getCategory());

最新文章

  1. C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据
  2. 优化Web中的性能
  3. 尽量用goto代替尾递归
  4. LINK1123:failure during conversion to COFF:file invalid or corrupt
  5. 【转】使用Sublime + PlantUML高效地画图
  6. hdu 4635 Strongly connected 强连通缩点
  7. js部分---函数与递归;
  8. poj 2192 (DP)
  9. Matlab之文件读写
  10. SGU 441 Set Division(矩阵快速幂)
  11. Rails常用命令
  12. Android 图片三级缓存之内存缓存(告别软引用(SoftRefrerence)和弱引用(WeakReference))
  13. https WebAPi
  14. ActiveX控件打包成Cab置于网页中自动下载安装(转载)
  15. PHP文本路径转换为链接文字
  16. Yoink Mac版(临时文件存储助手)中文版
  17. Windows server 安装 OpenSSH
  18. 【论文笔记】Dynamic Routing Between Capsules
  19. SQLSERVER最简单的同名数据库恢复过程.
  20. 20180925 SQL Server游标使用

热门文章

  1. 谷歌三大核心技术(一)The Google File System中文版
  2. poj 1503 Integer Inquiry (高精度运算)
  3. Asp.Netserver控件开发的Grid实现(三)列编辑器
  4. css3.0
  5. windows简单杀死进程的批处理程序
  6. 素数环(C - 暴力求解)
  7. C语言深度剖析--volatile(转载)
  8. Delphi资源大全
  9. mojo 默认use utf8;
  10. POJ2485——Highways