3.跟我学solr---使用solrj添加索引

上一章讲了怎么使用solr admin向solr服务器添加索引,Solr 是一个独立的企业级搜索应用服务器,它对外提供类似于 Web-service 的 API 接口。用户可以通过 http请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引;也可以通过 Http
Get 操作提出查找请求,并得到XML 格式的返回结果。所以我们可以使用httpClient作为客户端向solr服务器添加索引,但是幸运的是,solr为我们提供专门的客户端jar包,solrj,我们可以使用该jar包向solr服务器提交索引。

首先我们导入相关的包,相关的jar包可以通过下载的solr的压缩包中获取,其中包括:

1.dist/solrj-lib

2.dist/solr-solrj-*.jar

把这些jar包导入到classpath中,我们就可以开始使用solrj了。

HttpSolrServer

HttpSolrServer是用于连接solr服务器的类,它的底层实现是依赖apache 的 httpclient 的,下面是连接服务器的具体代码:

		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" );

向solr服务器添加数据

连接成功后,我们可以使用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());
时间: 2024-10-08 12:08:26

3.跟我学solr---使用solrj添加索引的相关文章

7.跟我学solr---对文件数据添加索引

简介 solr可以对文件数据进行解析,提取可索引内容进行建立索引,底层实现是依赖apache Tika的,Tika利用现有的解析类库,从不同格式的文档中(例如HTML,PDF,Doc),侦测和提取出元数据和结构化内容,然后交由solr建立索引. 添加文件数据索引例子 首先要保证你的solr版本在1.4以上,然后进入到进入到文件所在的目录,然后使用curl命令,把文件数据添加到solr中即可. cd site/html curl "http://localhost:8080/solr/update

搜索引擎系列十:Solr(solrj 、索引API 、 结构化数据导入)

一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>7.3.0</version> </dependency> 2. SolrJ的核

2.跟我学solr---在solr admin中添加索引

这一章为大家介绍如何在solr admin中,通过浏览器向solr添加索引 一.添加xml格式的文档 进入solr admin后,点击Documents,选择Documentation Type为xml,然后在Document(s)输入框中输入需要添加索引的文档.点击Submit Document就可以把内容添加到solr中,建立索引了. 参数解释: 1.overwrite = "true" | "false" 默认是true ,顾名思义,是否需要覆盖已有的索引 2

Apache Solr 之 使用SolrJ操作索引库

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

solr 的客户端调用solrj 建索引+分页查询

一.利用SolrJ操作solr API 使用SolrJ操作Solr会比利用httpClient来操作Solr要简单.SolrJ是封装了httpClient方法,来操作solr的API的.SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作. 需要的包如下: 1. apache-solr-solrj-3.5.0.jar 2. commons-httpclient-3.1.jar 3.slf4j-api-1.6.0.jar 4.commons-logging-1.1.jar 在

JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再对索引进行搜索的过程叫全文检索 4. 索引是什么? 非结构数据中提取一个数据.并重新组合的过程叫索引 5. Lucene实现 6. 入门程序 磁盘文件为原始文件 创建索引 第一步:获取文件 第二步:创建文档对象 第三步:创建分析器 第四步:保存索引及文档到索引库 搜索索引 第一步:用户接口(百度)

一步一步学solr:在开始前我们应该明白什么

我就用自己的项目来讲solr应用了,当然他的功能很多,大家可以看这里 http://my.oschina.net/fengnote/blog/288581 功能那是相当的多. solr可以理解为与应用分离的一个搜索服务,我们要搭建应用+搜索服务的关联配置实现部分业务. 我们的项目现在要改功能,一个内容发布系统,做一个站内搜索,原有的框架是SSI的,只把查询部分用solr来实现. 问题是: 我要查询一篇文章关联到N张表 我除了查询文章还要查询分类(也用solr实现) 新增.修改.删除文章/分类后要

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>

使用solrJ管理索引——(十四)

a)          什么是solrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图: b)          依赖的jar包 c)          添加文档 1.添加索引 //向索引库中添加索引 @Test public void addDocument() throws Exception { //和solr服务器创建连接 //参数:solr服务器的地址 SolrServer