环境要求 

jdk1.6及以上版本

solr发布版本

下载地址

http://lucene.apache.org/solr/mirrors-solr-latest-redir.html?

启动solr

1、解压solr-4.5.0.zip到你想到存放的路径,比如:d:/solr

2、cmd打开命令行窗口,进入d:/solr/example目录

3、执行命令:java -jar start.jar

4、通过第三步以后,系统会启动solr自带的jetty服务器,通过http://localhost:8983/solr/便可访问solr。

此时,solr已成功启动

创建索引

此时solr已安装并启动,但是还没有索引,只有创建好索引,搜索才能有结果

1、cmd进入/solr/example/exampledocs目录

2、执行命令:java -jar post.jar solr.xml monitor.xml,此时你已成功提交了2个solr文档

3、执行完第二步后,我们可以通过浏览器访问:http://localhost:8983/solr/collection1/select?q=solr&wt=xml

如果你想导入更多的文档,执行命令:java -jar post.jar *.xml

更新索引

当你重复执行命令:java -jar post.jar *.xml后,发现搜索的结果没有出现重复的数据,原因:example目录下的schema.xml中指定了列id为uniqueKey(即:唯一),所以当你重复提交数据到索引库时,id相同的数据会替换原来document中的数据。

如果你想要得到重复的数据,你可以通过修改exampledocs目录下*.xml中id值的方式实现

删除索引

1、执行命令:java -Ddata=args -Dcommit=false -jar post.jar “<delete><id>SP2514N</id></delete>”,可以删除id为SP2514N的document

2、执行第一步后,再去搜索发现搜索结果中还有id为SP2514N的数据,难道我们第一步删除不成功吗?其实不是,因为第一步的命令中-Dcommit=false,所以第一步的删除操作没有提交到索引(index)中。

3、在没有打开新的searcher之前,第一步删除数据会一直存在于搜索结果中,所以我们可以强制打开一个新的searcher,执行命令:java -jar post.jar -

查询数据

solr通过http以get的方式进行搜索数据,如:http://localhost:8983/solr/collection1/select?q=solr&wt=xml

q:查询的关键词(此时查询的字段是solrconfig.xml中指定的默认查询字段<str name=”df”>text</str>)

fl:搜索结果返回的字段

sort:排序

wt:搜索结果返回格式

排序

sorl提供了通过一个或多个字段进行排序的方法,使用sort参数,参数格式为“字段 排序(asc或desc)”。

score也可以用来排序

复杂的排序

如果没有指定sort参数,默认”score desc”进行排序,把匹配度最高的优先显示

高亮显示

有时候我们想高亮显示匹配的关键词,可以通过参数hl=true,并指定需高亮显示的字段hl.fl=name,features

…&q=video card&fl=name,id&hl=true&hl.fl=name,features

默认会把匹配的关键用“<em>”标签进行包装,如<em>手机</em>

门面搜索

前面“查询数据”一栏返回的是整个文档的数据,门面搜索可以根据我们的需求返回结果,如下:

1、以下例子搜索整个文档并根据字段cat技术匹配数量:

…&q=*:*&facet=true&facet.field=cat

注意:上面的例子虽然结果中只显示10条,但返回的数量是整个文档中匹配查询条件的总的数量。

2、在例子1的基础上可以再加一个字段inStock:

…&q=*:*&facet=true&facet.field=cat&facet.field=inStock

3、solr同样可以为任意查询条件计算数量,以下例子查询关键为ipod、价格在0-99和>100

…&q=ipod&facet=true&facet.query=price:[0 TO 100]&facet.query=price:[100 TO *]

4、以下例子查询字段manufacturedate_dt在2004年到2010年:

…&q=*:*&facet=true&facet.range=manufacturedate_dt&facet.range.start=2004-01-01T00:00:00Z&facet.range.end=2010-01-01T00:00:00Z&facet.range.gap=+1YEAR

搜索界面

solr提供了搜索界面:http://localhost:8983/solr/collection1/browse

文本解析

solr创建索引和进行搜索时都需要对文字进行解析,解析时需要用到分词器,中文的分词器我推荐使用mmseg4j分词器

solr核心的配置文件是schema.xml,索引库结构的定义及对每个字段采用什么分词器等都在这个文件里面进行配置

如:

<field name=”features” type=”text_en_splitting” indexed=”true” stored=”true” multiValued=”true”/>

结论

通过以上的学习,相信你已经对solr有个初步的掌握了。在兴奋之余我相信你肯定想把solr运用到自己的项目中,那么你可以通过以下步骤实现:

1、拷贝example目录到你的项目中,example目录作为进行定制

2、根据你的实际需求修改schema和solr/collection1/conf/目录下的其他文件

本文出自 luoshengsha.com,转载时请注明出处及相应链接。

本文永久链接:http://www.luoshengsha.com/118.html

另外一个地址:http://matieli.iteye.com/blog/1011149

http://blog.csdn.net/awj3584/article/details/16963525

五分钟solr4.5教程(搭建、运行)的更多相关文章

  1. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...

  2. 只需五分钟-用Maven快速搭建Spring Cloud微服务

    Maven安装手册 1.准备安装包 安装包: apache-maven-3.5.4-bin.zip  (最好JDK 1.7及以上版本) 集成包: eclipse-maven3-plugin.zip 2 ...

  3. 五分钟搭建一个基于BERT的NER模型

    BERT 简介 BERT是2018年google 提出来的预训练的语言模型,并且它打破很多NLP领域的任务记录,其提出在nlp的领域具有重要意义.预训练的(pre-train)的语言模型通过无监督的学 ...

  4. Docker五分钟搭建Wordpress

    当你看到这篇文章的时候,表明你已经有docker的基础知识了,或者可以看上一篇文章 Docker 入门教程. 传统的使用wordpress搭建网站,意味着你需要搭建以下四个环境: php: apach ...

  5. [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)

    [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例) 踏雁寻花 发表于 2015-8-23 23:31:28 https://www.itsk.com/thread-35 ...

  6. Org-mode五分钟教程ZZZ - Kaka Abel的日志 - 网易博客

    Org-mode五分钟教程ZZZ - Kaka Abel的日志 - 网易博客 Org-mode五分钟教程ZZZ  

  7. 五分钟学习React(三):纯HTML代码搭建React应用

    上一期我们使用了React官方的脚手架运行React应用.大家可能会觉得这种方法很繁琐,需要配置各种第三方插件.JQuery时代的前端真是让人怀念.这一期,我就带领大家创建一个"怀旧版&qu ...

  8. Org-mode五分钟教程ZZZ

    Table of Contents 1 源起 2 简介 2.1 获取 org-mode 2.2 安装 3 基础用法 3.1 创建一个新文件 3.2 简单的任务列表 3.3 使用标题组织一篇文章 3.4 ...

  9. git五分钟教程

    使用Git前,需要先建立一个仓库(repository).您可以使用一个已经存在的目录作为Git仓库或创建一个空目录. 使用您当前目录作为Git仓库,我们只需使它初始化. git init 使用我们指 ...

随机推荐

  1. HDU 2136 Largest prime factor(查找素数,筛选法)

    题目梗概:求1000000以内任意数的最大质因数是第几个素数,其中 定义 1为第0个,2为第1个,以此类推. #include<string.h> #include<stdio.h& ...

  2. struts2学习笔记(3)——struts2的局部类型转换

    今天又学到了一个新的东西,就是struts2的类型转换. 为什么要类型转换? 今天我就要传一个点的坐标给你,保存时用一个自定义的Point类来保存. 因为在表单里面传过去的是字符串,如“12,23”, ...

  3. Unix编程之size_t、ssize_t

    http://blog.csdn.net/lalor/article/details/7426184 首先,我非常肯定以 及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位 ...

  4. Java Logger(java日志)

    目录 1. 简介2. 安装3. log4j基本概念3.1. Logger3.2. Appender3.2.1. 使用ConsoleAppender3.2.2. 使用FileAppender3.2.3. ...

  5. Delphi 中的 procedure of object (类方法存在一个隐藏参数self),简单深刻 good

    其实要了解这些东西,适当的学些反汇编,WINDOWS内存管理机制,PE结构,看下李维的VCL架构剖析可以很好理解type TMyEvent = procedure of object;这是一种数据类型 ...

  6. swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)

    swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...

  7. json-lib 中关于null与"null"

    总感觉json-lib里面关于null和"null"的处理非常不合理,或者说是bug,去了json-lib的网站,最后一次更新是10年了... 发现官方网站第一段就说json-li ...

  8. 如何用Maven创建一个普通Java项目

    一下内容包括:用Maven创建一个普通Java项目,并把该项目转成IDEA项目,导入到IDEA,最后把这个项目打包成一个jar文件. 有时候运行mvn命令失败,重复运行几次就OK了,无解(可能因为网络 ...

  9. UVa 10256 - The Great Divide 判断凸包相交

    模板敲错了于是WA了好几遍…… 判断由红点和蓝点分别组成的两个凸包是否相离,是输出Yes,否输出No. 训练指南上的分析: 1.任取红凸包上的一条线段和蓝凸包上的一条线段,判断二者是否相交.如果相交( ...

  10. MyEclipse Blue Edition 6.5 注册码生成程序

    import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; im ...