solr6.0学习(一)环境搭建
准备工作:
目前最新版本6.0。下载solr 6.0:Solr6.0下载
JDK8 下载jdk1.8:jdk1.8【solr6.0是基于jdk8开发的】
tomcat8.0 下载:tomcat8
##################################
在说明搭建环境之前,其实solr5.0之后 solr已经内置jetty服务器,可以自行启动。但是为了加入自己的特性,
以及在solr基础之上的应用,此文章主要针对发布在tomcat8上。
##################################
1、安装jdk8
2、下载solr6.0后,解压solr6.0的包。
3、解压tomcat8
4、将【solr-6.0.0\server\solr-webapp】下的webapp文件拷贝到【apache-tomcat-8.0.33\webapps】目录下,
并将webapp重命名为solr(可以重命名为取任意名称)。
solr文件目录如下:
5、将【solr-6.0.0\server\lib\ext】下的所有jar包拷贝到【apache-tomcat-8.0.33\webapps\solr\WEB-INF\lib】
6、将【solr-6.0.0\server\resources】下的log4j.properties配置文件拷贝到【apache-tomcat-8.0.33\webapps\solr\WEB-INF\classes】,如果WEB-INF下没有classes文件那么 就创建一个classes文件夹。
7、在【apache-tomcat-8.0.33\webapps\solr】下新建一个文件【solrhome(文件夹名称可以任意命名)】,将【solr-6.0.0\server\solr】下的所有文件拷贝到刚刚创建
的solrhome中。
8、修改【apache-tomcat-8.0.33\webapps\solr\WEB-INF】下的web.xml,找到如下代码:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/put/your/solr/home/here</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
默认是注解掉,放开注解,并将<env-entry-value>中的值修改为刚刚步骤7中的solrhome目录,如:E:\project\Search\apache-tomcat-8.0.33\webapps\solr\solrhome
9、运行tomcat,运行成功后访问:http://localhost:8080/solr/index.html 即可。

Solr 6.0 学习(二)创建core并插入索引
修改各种配置文件。

1、修改solrhome下的solr.xml文件

注解掉zookeeper搭建集群配置,我们后面会采用master-slave的形式。

至于zookeeper的形式可以阅读以下这篇文章【solrCloud集群配置指导】:http://www.aboutyun.com/thread-9432-1-1.html
<!-- 结合zookeeper配置solrColound start -->
<!-- 采用master-slave的方式
<solrcloud>

<str name="host">${host:}</str>
<int name="hostPort">${jetty.port:8983}</int>
<str name="hostContext">${hostContext:solr}</str>

<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>

</solrcloud>

<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:600000}</int>
<int name="connTimeout">${connTimeout:60000}</int>
</shardHandlerFactory>
-->
<!-- 结合zookeeper配置solrColound end -->
2、在sorlhome文件夹下创建【my_solr】文件夹。

3、在【my_solr】文件夹中添加core.properties配置,内容如下:
name=my_solr
这个name的值实际上就core的名称,可以任意命名,为了保证统一和方便阅读,个人觉得最好和文件夹名称一致。
4、将【solr-6.0.0\example\example-DIH\solr\solr】下的conf文件夹拷贝到【my_solr】文件夹下。包含如下文件:
5、solr-5.0 以上默认对schema的管理是使用managed-schema,不能手动修改,需要使用Schema Restful的API操作。

如果要想手动修改配置,把【conf】文件夹中managed-schema拷贝一份修改为schema.xml,在solrconfig.xml中修改如下
<codecFactory class="solr.SchemaCodecFactory"/>
<!-- 解除managed-schema管理模式 start -->
<schemaFactory class="ClassicIndexSchemaFactory"/>
<!-- 解除managed-schema管理模式 end -->
重启tomcat8,可能会报错,查看tomcat日志发现,比喻:

缺少DataImportHandler的jar等,那么将【solr-6.0.0\dist】下的solr-dataimporthandler-6.0.0.jar和solr-dataimporthandler-extras-6.0.0.jar

拷贝到【apache-tomcat-8.0.33\webapps\solr\WEB-INF\lib】下。

重启tomcat8。如果缺少其他jar包,根据报错信息添加即可。没有异常,

访问:【http://localhost:8080/solr/index.html#/】
选择my_solr,会出现如下界面:
至此其实由于没有索引数据,其实solr是个空壳,那么下面写一个应用程序插入solr索引数据。

参考:http://www.open-open.com/lib/view/open1452062296995.html

1、首先需要修改schema.xml文件,添加
<field name="content_test" type="text_general" indexed="true" stored="true" multiValued="true"/>
field的属性和配置,可以google一下schema.xml 说明很多,用法也很多,这里就不赘述
2、添加索引数据,代码如下:

编写过程中可能会报错,最简便的方法是将web-inf下lib里所有jar包添加进来,然后运行,出什么错,就添加什么jar包4
------插入数据---------
package com.solr.insertData;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrInputDocument;

public class InsertProgarm {
//solr 服务器地址
public static final String solrServerUrl = "http://localhost:8080/solr";
//solrhome下的core
public static final String solrCroeHome = "my_solr";
//待索引、查询字段
public static String[] docs = {"Solr是一个独立的企业级搜索应用服务器",
"它对外提供类似于Web-service的API接口",
"用户可以通过http请求",
"向搜索引擎服务器提交一定格式的XML文件生成索引",
"也可以通过Http Get操作提出查找请求",
"并得到XML格式的返回结果"};
public static void main(String[] args) {
SolrClient client = getSolrClient();
int i=0;
List<SolrInputDocument> solrDocs = new ArrayList<SolrInputDocument>();
for (String content : docs) {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", i++);
doc.addField("content_test", content);
solrDocs.add(doc);
}
try {
client.add(solrDocs);
client.commit();
} catch (SolrServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public static SolrClient getSolrClient(){
return new HttpSolrClient(solrServerUrl+"/"+solrCroeHome);
}

}
-------查询数据------------
package com.solr.insertData;

import java.io.IOException;
import java.util.List;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;

public class SelectSolr {

public static void main(String[] args) throws SolrServerException, IOException {
String url = "http://localhost:8080/solr/my_solr";
//实例化一个solr
SolrClient solrClient = new HttpSolrClient(url);
//查询实现类
SolrQuery solrQuery = new SolrQuery();
//查询关键词 q 管家你字段
solrQuery.set("q", "id:2");
//过滤条件
//solrQuery.addFilterQuery("品牌");
//拿出response当中的数据 结果集
QueryResponse response = solrClient.query(solrQuery);

SolrDocumentList results = response.getResults();
//结果集有多少条数据
long numFond = results.getNumFound();

System.out.println("数据条数:"+numFond);

for(SolrDocument solrDocument:results){
String id = (String) solrDocument.get("id");
List<String> contentTest = (List) solrDocument.get("content_test");
System.out.println("id:"+id+"===content:"+contentTest);
}
}
}

---------------------------
3、运行成功后,会在【solrhome/my_solr】文件夹下创建一个【data】的文件夹,这个文件夹中的内容就是我们的solr索引。

其实其对于的是solconfig.xml中如下配置:

[html] view plain copy
在CODE上查看代码片派生到我的代码片

<!-- Data Directory

Used to specify an alternate directory to hold all index data
other than the default ./data under the Solr home. If
replication is in use, this should match the replication
configuration.
-->
<dataDir>${solr.data.dir:}</dataDir>
4、访问http://localhost:8080/solr/index.html选择【my_solr】core,选择query得到如下界面:
选择【my_solr】core,选择query,点击【Execute Query】查询结果如下:
其实其访问的url实际为:http://localhost:8080/solr/my_solr/select?q=*%3A*&wt=json&indent=true
至于q、wt、indent等参数,代表的含义,可以搜索solr查询语法。
那么至此,我们就将solr插件完毕,结合了core和创建索引、查询程序,完成!
以上参考网址:http://blog.csdn.net/upxiaofeng/article/details/51426401
##############################################################################################三.配置中文分词器
(IK)
(1)将IKAnalyzer2012FF_u1.jar 复制到 D:\JobsDBSolr\solr-Example\lib 目录以及\Tomcat 6.0\webapps\solr-Example\WEB-INF\lib下面。

(2)在D:\JobsDBSolr\solr-Example 下面创建目录classes,并将IKAnalyzer.cfg.xml 和 stopword.dic 复制到这个目录。

(3)配置之前从解压的Solr拷贝出来的solr文件夹下的配置文件。 即D:\JobsDBSolr\solr-Example\collection1\conf目录下面的schema.xml配置文件。

随便找一个fieldType配置项的后面,加入一个新的fieldType配置项。

<!-- IKAnalyzer 中文分词器配置 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer">
</analyzer>
</fieldType>

solr6.0学习的更多相关文章

  1. 转:solr6.0配置中文分词器IK Analyzer

    solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持s ...

  2. solr6.0.0 + tomcat8 配置问题

    中间件需求: apache-tomcat-8.0.32.tar.gz jdk-8u74-linux-x64.rpm solr-6.0.0.zip 0.安装java JDK rpm -ivh jdk-8 ...

  3. 我与solr(六)--solr6.0配置中文分词器IK Analyzer

    转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无 ...

  4. Servlet3.0学习总结——基于Servlet3.0的文件上传

    Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...

  5. DirectX 总结和DirectX 9.0 学习笔记

    转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...

  6. [EntLib]微软企业库5.0 学习之路——第一步、基本入门

    话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...

  7. Bootstrap3.0学习14

    Bootstrap3.0学习第十四轮(分页.徽章)   前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/340 ...

  8. Bootstrap3.0学习第八轮

    Bootstrap3.0学习第八轮(工具Class)   前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/34 ...

  9. Bootstrap3.0学习第六轮(表单)

    Bootstrap3.0学习第六轮(表单) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.h ...

随机推荐

  1. gotoTop返回顶部 JS

    方法: 1.首先在body添加一个标签,在一个页面添加,其它页面也会生效. <body> <a name="top"> 2.然后在页脚添加一个链接 < ...

  2. Yii2 初体验

    看着Yii1.1有那么多的不爽,又看着Yii2一天天成熟起来,于是凑一个小项目的原型阶段,试着用Yii2搞一搞. 随手写了一点体会,以一个Yii1的熟练工人看向Yii2的视角,简单一说吧.(将来随时可 ...

  3. JavaScript的apply和call方法及其区别

    参考资料: http://blog.csdn.net/myhahaxiao/article/details/6952321 apply和call能“劫持”其他对象的方法来执行,其形参如下: apply ...

  4. 周期串(Periodic Strings,UVa455)

    解题思路: 对一个字符串求其最小周期长度,那么,最小周期长度必定是字符串长度的约数,即最小周期长度必定能被字符串长度整除 其次,对于最小周期字符串,每位都能对应其后周期字串的每一位, 即 ABC  A ...

  5. Jenkins 搭建U3D自动发布 Android

    工具 [u3d相关的PostProcessBuildPlayer,PerformBuild.cs] 1.Jenkins 开源包  Java -jar jenkins.war,参考链接 http://w ...

  6. Linux里如何查找文件内容 (转)

    Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件g ...

  7. c++中try catch的用法

    c++中try catch的用法 标签: c++exception数据库sqlc 2011-10-24 21:49 45622人阅读 评论(3) 收藏 举报  分类: 一点小结(267)  版权声明: ...

  8. sql复制数据表和表结构

    SQL复制数据表 (select * into 与 insert into) select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) sele ...

  9. HDOJ 1907 John

    对于任意一个 Anti-SG 游戏,如果我们规定当局面中所有的单一游戏的 SG 值为 0 时,游戏结束,则先手必胜当且仅当:  (1)游戏的 SG 函数不为 0 且游戏中某个单一游戏的 SG 函数大于 ...

  10. 以DDD为开发模式的设计开发步骤可以是

    以DDD为开发模式的设计开发步骤可以是:1)分析需求:2)画出用例图,系统中各个角色如何使用系统,也包括外部系统如何使用系统,也包括系统中到某个时间点自动启动的某些功能(此时角色就是时间):3)针对各 ...