Apache solr 6.6.0安装

最近使用了Apache solr搜索引擎框架,solr是基于lucene的一个搜索服务器,lucene也是Apache的一个开源项目;对于学习搜索引擎来说,这个入门也是不错的

http://www.apache.org/dyn/closer.lua/lucene/solr/6.6.0,首先先把Apache solr 6.6.0的包下载.

我下载来的目录结构是这样的,bin里可以进行solr的启动,几条基本的命令,在bin里:一般使用端口为8983

solr start -p 8983,开启solr

solr stop -p 8983,关闭solr

solr start -p 8983 -f 前台开启,默认是后台开启

也可以不加-p 端口,会开启默认端口,

浏览器里打开solr管理界面 http://localhost:8983/solr/

solr create -c <name> 创建一个核心
solr delete -c <name> 删除一个核心

创建好的核心是放在solr-6.6.0\server\solr\下的,进入创建好的核心里,

核心/data/index/里的文件和lucene的索引文件差不多,核心/conf/的里文件

data-config.xml文件是自己创的,而最常修改的文件就是solrconfig.xml和managed-schema,注意版本不同,配置文件的名称也不同


一般如果要让搜索引擎支持中文的话,是需要加入中文词法分析,而如果要和数据库连接,是需要数据库的架包,首先考虑你的搜索引擎是否需要中文词法分析器.

对几种中文分析器: StandardAnalyzer、ChineseAnalyzer、CJKAnalyzer、IK_CAnalyzer、MIK_CAnalyzer、MMAnalyzer(JE分词)、PaodingAnalyzer等,我用的是IK_CAnalyzer

链接:http://pan.baidu.com/s/1o8HoQRg 密码:yavs,下载的地址,下好的文件夹为

当然,将ik-analyzer-solr5-5.x.jar 放入solr-6.6.0\server\solr-webapp\webapp\WEB-INF\lib,一般对于架包都是放着的

IKAnalyzer.cfg.xmlmydict.dic(搜狗的扩展词库),stopword.dic放入solr-6.6.0\server\solr-webapp\webapp\WEB-INF\classes

然后有了这些架包,就需要在配置文件里导入,在自己的核心\conf\managed-schema

  <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_id.txt" ignoreCase="true"/>
<filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
</analyzer>
</fieldType>
<!--它之后添加添加配置-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
</analyzer>
</fieldType>

即添加一个类型为"text_ik",之后保存,接下来测试一下,先Reload一下,

在自己的核心里的Analysis里测试,记得选择FieldType为text_ik,即中文词法分析,Verbose Output可选不可选都可以,


接下来就是配置数据库连接,   大多数的应用程序将数据存储在关系数据库、xml文件中。对这样的数据进行搜索是很常见的应用。所谓的DataImportHandler提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入。

Handler首先要在自己的核心\conf\solrconfig.xml文件中配置下,如下所示:(强迫症,位置一定要规范,其实放哪都行)

  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

      <!--之后引入DataImportHandler类的jar-->
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

在随便一个<requestHandler>...</requetHandler>之后添加:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

我使用的是mysql,首先在核心里添加一个字段,这个字段可以通过

注意一下,field type看你的需要写,如果需要中文分析,就用text_ik,填好后,然后添加(Add Field)

或者在自己的核心\conf\managed-schema里:

  <field name="_version_" type="long" indexed="false" stored="false"/>
<!--之后添加,字段类型注意-->
<field name="content" type="text_ik" indexed="true" stored="true"/>
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="title" type="text_ik" indexed="true" stored="true"/>
<!--之前添加-->
<dynamicField name="*_txt_en_split_tight" type="text_en_splitting_tight" indexed="true" stored="true"/>

其实放置的位置无所谓,只是最好还是规范一点好

接下来就是配置data-config.xml,在data-configxml中

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="production" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/solr_test" user="root" password="root" batchSize="-1" />
  <document name="news">
<entity dataSource="production" name="test"
pk="id"
query="select * from test"
deltaImportquery="select * from test where id=${dih.delta.id}" >
<!--column的id是数据库的id,name的id是managed_schema里面的id,id是必须,并且唯一的-->
<field column="id" name="id" />
<!--column的title是数据库的title字段,name的title是managed_schema里面的title,下面配置同理-->
<field column="id" name="id" />
<field column="title" name="title" />
<field column="content" name="content" />
</entity>
</document>
</dataConfig>

先添加一个数据源,之后就是添加一个<document>,架包的位置和配置中文词法分析的架包放置位置一样,solr-6.6.0\server\solr-webapp\webapp\WEB-INF\lib,接下来测试一下,先Reload一下,然后

Command中选择full-import(全文导入),Entity即选择data-config.xml下自己写的,Execute后,多Refresh Status几次

就看到效果了

http://www.cnblogs.com/llz5023/archive/2012/11/15/2772154.html,推荐的一篇博客


最后的最后写下自己最近写的联合查询,有时候我想把多个表信息查出来,在data-config.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="production" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/shop_manager" user="root" password="root" batchSize="-1" />
  <document name="items">
<entity dataSource="production" name="all_resource"
pk="id"
query="select name,description,price from food_store union select name,description,price from cloths_store union select name,description,price from book_store;">
<!--column的id是数据库的id,name的id是managed_schema里面的id,id是必须,并且唯一的,不过我设置了uuid和更新策略-->
<field column="name" name="name"/>
<field column="description" name="description"/>
<field column="price" name="price"/>
</entity>
</document>
</dataConfig>

query中这么写,不过呢,有一个冲突就是id的重复,如果去掉id字段即,唯一键就没了,所以我就用了UUID,含义是通用唯一识别码 (Universally Unique Identifier)

修改自己的核心\conf\solrconfig.xml中的结果为:

<!--RequestHandler 手动添加-->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
<str name="update.chain">uuid</str>
</lst>
</requestHandler>
<!--还需添加一个uuid的更新策略-->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">uuid</str>
</lst>
</requestHandler>

搜索updateReqeustProcessorChain,在:

<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">

前加入如下配置:

<updateRequestProcessorChain name="uuid">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">id</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.DistributedUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

修改自己的核心\conf\solrconfig.xml中的

<field name="id" type="uuid" multiValued="false" indexed="true" required="true" stored="true"/>

添加一个fieldType类型

<fieldType name="uuid" class="solr.UUIDField" indexed="true"/>
<!--确保uniqueKey的值是已经定义的,一般默认是id-->
<uniqueKey>id</uniqueKey>

Reload搞定

参考文档https://blog.liyang.io/261.html

Apache solr 6.6.0安装的更多相关文章

  1. solr 5.1.0安装-Windows(亦可用于5.4.1)

    以前4.10的时候写过一个安装教程,是安装在tomcat的,在来安装5.1的时候,看了下简介,发现从5.x后solr集成了jetty,安装变得简单了不少. 现在只需要三步就能搞定,下载solr包解压, ...

  2. Solr 4.4.0安装

    软件包准备 JDK http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin Solr https://archi ...

  3. Apache Solr < 8.2.0远程命令执行漏洞(CVE-2019-0193)

    介绍:Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现. 漏洞原因:此次漏洞出现在Apache Solr的D ...

  4. PHP5.4 for Apache, php 5.4.0安装过程、方法、配置 ; Apache2.2支持php5.4的配置方法

    那我们如何选择下载哪个版本的PHP呢?如果你是在windows下使用Apache+PHP的,请选择VC6版本:如果你是在windows下使用IIS+PHP的,请选择VC9版本. 二.如何选择PHP5. ...

  5. 04 Apache Solr: 目录结构

         通过前面的介绍,我们已经能够看到管理员界面并对Solr形成了一个感性的认识.本篇将在物理上深入了解Solr的安装目录结构和Solr示例的主目录结构.   安装目录结构 Solr 6.3.0安 ...

  6. Apache Solr Velocity模板注入RCE漏洞复现

    Apache Solr Velocity模板注入RCE漏洞复现 一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通 ...

  7. 应用安全 - Web框架 - Apache Solr - 漏洞汇总

    CVE-2019-12409 Date: // 类型: 配置不当导致远程代码执行 前置条件: 影响范围: Solr and for Linux Solr下载:https://www.apache.or ...

  8. 【漏洞复现】Apache Solr远程代码执行(CVE-2019-0193)

    0x01 概述 Solr简介 Apache Solr 是一个开源的企业级搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr ...

  9. 【漏洞复现】Apache Solr via Velocity template远程代码执行

    0x01 概述 Solr简介 Apache Solr 是一个开源的企业级搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr ...

随机推荐

  1. 费用流+SPFA ||Luogu P3381【模板】最小费用最大流

    题面:[模板]最小费用最大流 代码: #include<cstdio> #include<cstring> #include<iostream> #include& ...

  2. 【学习】019 SpringBoot

    一.SpringBoot介绍 1.1.SpringBoot简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配 ...

  3. 常见BUG

    1.没有配置Tomcat服务,由于 <exclusions> <exclusion> <groupId>org.springframework.boot</g ...

  4. jquery 对于新插入的节点 的操作绑定(点击事件,each等)

    因为最近项目遇到这个问题,下面给大家带来一篇Jquery对新插入的节点 获取并对这个节点绑定事件失效的解决方法.我觉得挺不错的,大家也可以参考一下: 对于绑定事件来讲:       方法一:使用liv ...

  5. 【LuoguP3264】[JLOI2015] 管道连接(斯坦那树)

    题目链接 题目描述 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰.该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情报站 u ...

  6. 对includes的研究

    1.includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false. 2.let site = ['runoob', 'google', 'taobao']; s ...

  7. 51nod1820 长城之旅

    题目描述 BB 痛失一血(打了场Comet OJ回来就没了) 不过后来又刷了一道水题 题解 LCM+取模=结论题 结论1 \(gcd(k^{2^i}+1,k^{2^j}+1)=1 (i\neq j 且 ...

  8. 面试题常考&必考之--js中的call()和apply()

    apply: 接受两个参数,第一个参数是要绑定给this的值,第二个参数是一个参数数组.当第一个参数为null.undefined的时候,默认指向window. call: 第一个参数是要绑定给thi ...

  9. CSS颜色和长度单位

    颜色 如果我们相给页面设置颜色可以采用多种方法进行设置: 一.命名颜色 假设在设置页面的颜色时觉得一部分很小的颜色集中就足够了,就可以直接给定颜色的名称.CSS称这些有名称的颜色为命名颜色. 命名颜色 ...

  10. PHP基础教程 常见PHP错误类型及屏蔽方法

    程序只要在运行,就免不了会出现错误,错误很常见,比如Error,Notice,Warning等等.这篇文章兄弟连PHP培训 小编来跟大家具体说一下PHP的错误类型和屏蔽方法.在 PHP 中,主要有以下 ...