solr实战-(一)

实现用户数据索引及查询

1. 启动solr

solr start

2. 创建collection

solr create -c user

3. schema中加入field

3.1 solr-5.2.1/server/solr/user/conf/managed-schema中加入

                <!--定义IK分词类型-->
               <fieldType name="text_ik" class="solr.TextField">
                   <!--索引时候的分词器-->
                   <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
                   <!--查询时候的分词器-->
                   <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
               </fieldType>

               <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
               <field name="username" type="text_ik" indexed="true" stored="true" multiValued="true"/>
               <field name="age" type="text_ik" indexed="true" stored="true"/>
               <field name="keywords" type="text_ik" indexed="true" stored="true"/>

3.2 加入IK分词库

filed定义中使用了IKAnalyzer,须要进入相关配置引用分词器

a. solr-5.2.1/contrib/analysis-extras/lib中加入IKAnalyzer3.2.8.jar
 下载地址: http://download.csdn.net/detail/buyaore_wo/8946777

b. solrconfig.xml (/solr-5.2.1/server/solr/user/conf)中加入库引用配置,例如以下

<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" regex=".*\.jar" />

4.使用SolrJ加入索引数据

	/**
	 * 加入文档
	 */
	@Test
	public void addDoc() {
		SolrInputDocument doc = new SolrInputDocument();
		doc.addField("id", "12");
		doc.addField("username", "哈哈");
		doc.addField("keywords", "哈哈 你好");
		doc.addField("age", "18");

		UpdateResponse response;
		try {
			response = httpSolrClient.add(/*"user",*/ doc);
			// 提交
			httpSolrClient.commit();

			// logger.info("########## Query Time :" + response.getQTime());

			System.out.println("########## Query Time :" + response.getQTime());
			// logger.info("########## Elapsed Time :" +
			// response.getElapsedTime());
			System.out.println("########## Elapsed Time :"
					+ response.getElapsedTime());
			// logger.info("########## Status :" + response.getStatus());
			System.out.println("########## Status :" + response.getStatus());
		} catch (SolrServerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

5.查询数据

	@Test
	public void testQuery() {
		SolrQuery solrQuery = new SolrQuery("keywords:*好");
		// solrQuery.setFilterQueries("resourcename:*analytics*");
		// SolrQuery solrQuery = new SolrQuery("*:*");
		// solrQuery.setFields("id", "title");
		solrQuery.setStart(0).setRows(5);
		try {
			QueryResponse queryResponse = httpSolrClient.query(/*"user",*/
					solrQuery);
			// logger.info("results:" +
			// queryResponse.getResults().getNumFound());
			System.out.println("results:"
					+ queryResponse.getResults().getNumFound());
			SolrDocumentList solrDocumentList = queryResponse.getResults();
			for (SolrDocument solrDocument : solrDocumentList) {

				Collection<String> fieldNames = solrDocument.getFieldNames();
				// logger.info("==========================================");
				System.out
						.println("==========================================");
				for (String field : fieldNames) {
					// logger.info(field + ":" +
					// solrDocument.getFieldValue(field));
					System.out.println(field + ":"
							+ solrDocument.getFieldValue(field));
				}
			}
		} catch (SolrServerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

中途可能遇到下面这种异常

org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://192.168.0.12:8983/solr: Expected mime type application/xml but got text/html. <html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<title>Error 404 Not Found</title>

</head>

<body><h2>HTTP ERROR 404</h2>

<p>Problem accessing /solr/update. Reason:

<pre>    Not Found</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>

</body>

</html>

原因是没有指定 collection_name

时间: 2024-11-05 22:33:26

solr实战-(一)的相关文章

Solr实战:使用Hue+Solr实现标签查询

公司最近在研究多条件组合查询方案,Google的一位技术专家Sam和我们讨论了几个备选方案. Sam的信: 我做了进一步研究,目前有这么几种做法: 1) 最直接粗暴,只做一个主index,比如按行业+地区做一个index,这样来说的话,无论多少个标签的查询,直接先用主index做一个筛选,这样下来可能只有少于10w个row,然后对这10w个一个个filtering,这种做法可能能够满足大部分需求.当然,这种做法需要用到cache来优化,否则每次都去DB load会影响数据库的performanc

solr实战

实现用户数据索引及查询 启动solr solr start 创建collection solr create -c user schema中添加field 3.1 solr-5.2.1/server/solr/user/conf/managed-schema中添加 <field name="id" type="string" indexed="true" stored="true" required="true

solr实战1

实现用户数据索引及查询 1. 启动solr solr start 2. 创建collection solr create -c user 3. schema中添加field 3.1 solr-5.2.1/server/solr/user/conf/managed-schema中添加 <!--定义IK分词类型--> <fieldType name="text_ik" class="solr.TextField"> <!--索引时候的分词器

solr与.net系列课程(二)solr的配置文件及其含义

 solr与.net系列课程(二)solr的配置文件及其含义  本节内容还是不会涉及到.net与数据库的内容,但是不要着急,这都是学时solr必学要掌握的东西,solr可不是像其他的dll文件一样,只需要引用就能调出方法与数据的,你不配置好是无法使用,前两节主要是起铺垫作用的,看起来会很枯燥无味的. 本章节内容是为下一节连接数据库做准备的,单拿出来看的话,会让人很迷糊,没关系,就当提前预习了,知道有这么个东西就行了,等下一节结合数据库后就好理解了 上一节我们已经完成了solr的基本配置,这里我们

下载快速上手数据挖掘之solr搜索引擎高级教程(Solr集群、KI分词、项目实战)

Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎. 快速上手数据挖掘之solr搜索引擎高级教程(Solr集群.KI分词.项目实战),刚刚入手,转一注册文件,视频的确不错,可以先下载看看:http://pan.baidu.com/s/1jIdgtWM 密码:s1t3

Solr集群、KI分词、项目实战

Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎. 讲师本人之前在互联网大数据.国家水电数据中心方面的项目时,对海量数据的查询和检索都采用了solr的集群服务,达到高效的实时搜索效果,为满足越来越多大数据人才的需求,特意整理录制成视频,适合各层次学员学习本视频的知识点,当然课程中的知识点大家一看也就知道

java架构师课程、性能调优、高并发、tomcat负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr集群与应用、分布式实战、主从复制、高可用集群、大数据

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo

大型分布式项目项目实战Springmvc+Spring+Mybatis+Maven+CMS+Redis+Solr+Linux+Nginx+单点登录、分布式缓存、负载均衡视频课程

* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat

solr分布式索引【实战一、分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例】

1 private static Properties prop = new Properties(); 2 3 private static String confFilePath = "conf" + File.separator + "config.properties";// 配置文件目录 4 static { 5 // 加载properties 6 InputStream is = null; 7 InputStreamReader isr = null;