文档章节

solr5.0入门

 果树啊
发布于 2015/02/26 16:34
字数 1597
阅读 463
收藏 3
点赞 1
评论 0

   简介: solr5.0是一个独立的应用程序,不再依赖其他Web服务器就能提供Web服务(这是和4.x版本最大的差异,内置jetty)。

下载:http://lucene.apache.org/solr/

    

  1. 安装solr

    下载压缩包解压即可!

  2. 目录说明

    • dist 各种jar包

    • contrib 各种jar包

    • bin 常用命令脚本

    • server web服务器

      • solr 未来创建的core会在该目录下

        • configsets  solr配置集,新建的core可以从这里拷贝配置

        • xx-core

          • conf 配置文件

            • solrconfig.xml solr的配置信息

            • schema.xml 分词器配置信息

          • data 索引等数据

      • logs 日志文件

      • webapps web程序部署位置

    • example 

      • example-DIH 数据导入工具

    • licenses 各种授权协议

    • docs api文档

  3. 启动solr

            solr提供了启动脚本

    bin/solr start
    前台运行	bin/solr start -f
    指定端口号 bin/solr start -p 8984(默认端口号8983)
    查看solr状态 bin/solr status
    结束solr  bin/solr stop -p 8984

     后台管理地址 http://localhost:8984/solr

    logging:显示日志

    Core Admin: core就是搜索示例,放置索引。

    java properties:查看java配置信息

    Thread dump:查看线程信息

  4. 创建一个搜索实例

    {solr安装路径}/server/solr/新建一个文件夹命名为test

    拷贝{solr安装路径}/server/solr/configsets/sample_techproducts_configs到test目录下

    目录结构如下:
             

    在后台采用如下配置:

  5. 配置smartcn分词期

    1. 第一步:导入smartcn的jar包

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex=".*smartcn.*\.jar"></lib>
    2. 第二步:配置分词器

      1.solr5

      在{solr安装路径}/server/solr/test/conf/schema.xml加入如下代码

      <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
            <analyzer> 
                <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>     
                <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>           
            </analyzer>
          </fieldType>
      2.solr6

      在{solr安装路径}/server/solr/test/conf/managed-schema加入如下代码

      <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
            <analyzer> 
                <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.StopFilterFactory" ignoreCase="false" words="stopwords.txt" />           
            </analyzer>
          </fieldType>

       

    3. 第三步:检查是否正确配置
       
       如果可以搜索到text_cn即表示配置成功,最好用一段文字测试下分词结果。

  6. 配置数据导入handler(用于数据导入,生成索引)

    1. 第一步:导入相关jar包(solr6不需要这一步)

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
    2. 第二步:配置handler(solr6不需要这一步)

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <requestHandler name="/dataimport" class="solr.DataImportHandler">
          <lst name="defaults">
            <str name="config">db-data-config.xml</str>
          </lst>
        </requestHandler>
    3. 第三步:配置数据源,源数据与索引的隐射关系

      在{solr安装路径}/server/solr/test/conf/下新建db-data-config.xml,配置如下:

      <dataConfig>
          <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/appfamecms" user="1" password="1"/>
          <document name="articles">
              <entity name="cms_article" query="select id,title,content,create_time from cms_article">
                  <field column="id" name="id" />
                  <field column="title" name="title" />
                  <field column="content" name="content" />
                  <field column="create_time" name="create_time" />
              </entity>
          </document>
      </dataConfig>
    4. 第四步:验证配置是否成功

      在后台core admin中reload当前搜索实例的配置

      then在搜索实例的dataimport出现下图情形即为成功

  7. 导入数据

    1. 第一步:导入mysql的jar包 下载地址:见参考资料5

      将jar放置到{solr安装路径}/dist目录下,

      在{solr安装路径}/server/solr/test/conf/solrconfig.xml加入如下代码

      <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql.*\.jar" />
    2. 第二步:验证配置(配置见第六点)

      如果显示indexing completed. Added/Updated: 1847 documents. Deleted 0 documents

      documents的个数大于0说明我们成功导入x条数据到solr中

  8. 设置field的索引方式

  9. 查询

  10. 更新索引

  11. 删除索引

  12. 优化

  13. 定时完整数据重新导入

crontab -e
curl -d "command=full-import&clean=true&commit=true&optimize=true&wt=json&indent=true&verbose=false&debug=false" "http://ip:port/solr/{core名称}/dataimport"

14.增量导入数据配置

修改db-data-config.xml添加deltaQuery、deltaImportQuery、pk三个属性

    1.pk设置主键字段名称,该字段必须在managed-schema配置过<uniqueKey>字段名</uniqueKey>

    2.deltaQuery该属性用于查询主键字段值

    3.deltaImportQuery该属性用于查询需要被索引的所有字段的sql

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/appfamecms" user="1" password="1"/>
    <document name="articles">
        <entity name="cms_article" query="select id,title,content,create_time from cms_article" pk="id" deltaQuery="select id from cms_article where id>${dataimporter.delta.id}" deltaImportQuery="select id,title,content,create_time from cms_article where id={$dataimporter.delta.id}">
            <field column="id" name="id" />
            <field column="title" name="title" />
            <field column="content" name="content" />
            <field column="create_time" name="create_time" />
        </entity>
    </document>
</dataConfig>

15.配置定时数据更新

16.搜索词建议

https://cwiki.apache.org/confluence/display/solr/Suggester

更新中~~~

 

错误信息:

1.配置好的solr没有任何数据,启动时报错:SolrException: Invalid Number: MA147LL/A

这不是你的错,你可能是把solr schema.xml的id设置成了int类型,设置成int类型没什么错,但是solr启动是会扫描conf目录下的elevate.xml文件,这个文件中定义的id值是MA147LL/A所以就会出现异常SolrException: Invalid Number: MA147LL/A

解决问题的方法是修改elevate.xml文件,将其中的id值设置为数字,就可以了。

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/appfamecms" user="1" password="1"/>
    <document name="articles">
        <entity name="cms_article" query="select id,title,content,create_time from cms_article" pk="id" deltaQuery="select id from cms_article where id>${dataimporter.delta.id}" deltaImportQuery="select id,title,content,create_time from cms_article where id={$dataimporter.delta.id}">
            <field column="id" name="id" />
            <field column="title" name="title" />
            <field column="content" name="content" />
            <field column="create_time" name="create_time" />
        </entity>
    </document>
</dataConfig>

2.全量导入数据报:

Caused by: java.sql.SQLException: Illegal value for setFetchSize().

在db-data-config.xml的dataSource标签添加batchSize属性并赋值-1即可,修改后的内容

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/appfamecms" user="1" password="1" batchSize="-1"/>
    <document name="articles">
        <entity name="cms_article" query="select id,title,content,create_time from cms_article" pk="id" deltaQuery="select id from cms_article where id>${dataimporter.delta.id}" deltaImportQuery="select id,title,content,create_time from cms_article where id={$dataimporter.delta.id}">
            <field column="id" name="id" />
            <field column="title" name="title" />
            <field column="content" name="content" />
            <field column="create_time" name="create_time" />
        </entity>
    </document>
</dataConfig>

 

参考资料:

1.官网参考文档 http://apache.fayea.com/lucene/solr/ref-guide/apache-solr-ref-guide-5.0.pdf

2.官网wiki之DataImportHandler https://wiki.apache.org/solr/DataImportHandler

‍3.solr教‍‍程,值得刚接触搜索开发人员一看 http://blog.csdn.net/awj3584/article/details/16963525

4.Ajita博客 http://ajita.iteye.com/blog/1995140

5.CSDN MYSQL JAR包下载:http://download.csdn.net/download/nsrainbow/8196897

6.Apache Solr查询语法 http://blog.javachen.com/2014/03/03/solr-query-syntax/

7.solr 的edismax与dismax比较与分析 http://blog.csdn.net/duck_genuine/article/details/8060026

8.solr搜索打分规制排序http://lavafree.iteye.com/blog/1685766

9.Lucene Scoring 评分机制 http://blog.chenlb.com/2009/08/lucene-scoring-architecture.html

10.解决Solr重建索引时没有索引部分表的数据问题 http://www.jianshu.com/p/fd857c02effc

11.solrconfig.xml 应用解析调优 https://segmentfault.com/a/1190000002582878

© 著作权归作者所有

共有 人打赏支持
粉丝 11
博文 203
码字总数 49313
作品 0
福州
高级程序员
solr在windows下部署安装

首先上一张图,solr5.0版本开始,不再支持以war包的方式部署到tomcat上了,所以大家在安装部署solr的时候,需要看清楚自己下载的版本号,具体详细的安装步骤,请移步这里https://cwiki.apach...

陳昇osc ⋅ 2016/11/04 ⋅ 0

CentOS下安装Solr5.3

https://lucene.apache.org/solr/ 前言 Solr现在是一个独立的服务器。 从Solr5.0开始,Solr不再发布为在任何Servlet容器中部署的“war”Web应用程序包(Web Application Archive)。Solr现在...

沉淀岁月 ⋅ 2016/09/08 ⋅ 0

【干货】界面控件DevExtreme视频教程大汇总!

DevExtreme是一款为移动开发者精心准备的,跨平台开发的HTML5/JS框架,可以构建iOS、Android、Tizen和Windows Phone 8应用程序,是Visual Studio开发人员开发跨平台移动产品的优选工具。本文...

鸟栖沙岩 ⋅ 2016/12/07 ⋅ 0

《鸡啄米C++编程入门系列》系列技术文章整理收藏

《鸡啄米C++编程入门系列》系列技术文章整理收藏 收藏整理鸡啄米C++编程入门系列文章,供个人和网友学习C++时参考 1鸡啄米:C++编程入门系列之前言 2鸡啄米:C++编程入门系列之一(进制数) ...

开元中国2015 ⋅ 2015/05/26 ⋅ 0

MyBatis3.2.x从入门到精通系列

Java框架篇---Mybatis 入门 MyBatis3.2.x从入门到精通之第一章 MyBatis3.2.x从入门到精通之第二章 MyBatis3.2.x从入门到精通之第三章 MyBatis3.2.x从入门到精通之第四章 MyBatis3.2.x从入门到...

HenrySun ⋅ 2016/10/07 ⋅ 0

MySQL入门很简单-学习笔记 - 索引页

索引一下,方便阅读,后面有完整的PDF下载地址 MySQL入门很简单-学习笔记 - 第1 章 数据库概述 MySQL入门很简单-学习笔记 - 第 2 章 Windows平台下安装与配置MySQL MySQL入门很简单-学习笔...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Node.js开发入门—语音合成示例

出于项目需要,搞了一个语音合成(TTS)的小示例,使用的是OKVoice。 我想在PC上测试,OKVoice的快速接入API可以实现我的目的,文档在这里:http://dev.okvoice.com/file.php。 直接上代码吧...

foruok ⋅ 2015/09/28 ⋅ 0

王者荣耀实时对战服务器Photon之Pun应用系列文章

00、PhotonPUN说明 01、PUN基本入门之介绍 02、PUN基本入门之Lobby大厅 03、PUN基本入门之Lobby UI 04、PUN基本入门之游戏场景构建 05、PUN基本入门之场景管理 06、PUN基本入门之创建角色预设...

liang_704959721 ⋅ 2017/11/14 ⋅ 0

TensorFlow人工智能引擎入门教程所有目录

TensorFlow 人工智能引擎 入门教程之一 基本概念以及理解 TensorFlow人工智能引擎入门教程之二 CNN卷积神经网络的基本定义理解。 TensorFlow人工智能引擎入门教程之三 实现一个自创的CNN卷积...

zhuyuping ⋅ 2016/04/22 ⋅ 6

VS2010/MFC编程入门教程之目录和总结(鸡啄米)

鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够。以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事...

weixin_40647819 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot整合模板引擎thymeleaf

项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId......

yysue ⋅ 15分钟前 ⋅ 0

ConstraintLayout使用解析

AndroidStudio3.0创建Project默认的布局就是ConstraintLayout。 AndroidStudio3.0前的可以自己修改,使用ConstraintLayout。 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中...

_OUTMAN_ ⋅ 27分钟前 ⋅ 0

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 今天 ⋅ 9

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 今天 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部