JAVA拓展之Solr搜索引擎

JAVA拓展之Solr搜索引擎

      引言:最近工作需要涉及到solr搜索引擎的使用, 因此也接着这个宝贵的机会,好好整理一下solr的知识点,在这里记录一下,方便以后好复习。

  1、Solr是什么?

       Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。

    在版本上,solr5.0已经开始支持独立运行,不再需要依赖tomcat,成为了独立的服务器。

  2、solr的安装与配置

  • jkd要求:Solr 4.10 要求JDK版本必须是1.7或更高,solr7需要java8环境,且需要在环境变量中添加 JAVA_HOME变量

  • 下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/

  • 安装:1、 将solr-4.10.2.zip文件拷贝到E盘;(或者其他盘都可以,只要目录中不要出现中文就行。) 
               2、 解压solr-4.10.2.zip文件,得到solr-4.10.2目录。 
               3、运行cmd,执行命令进入C:\solr-4.10.2\example 
               4、 执行命令:java -jar start.jar 
               5、 打开浏览器,输入地址:http://localhost:8983/solr

3、solr的基本使用

1、数据导入

    导入数据到Solr的方式也是多种多样的: 

  1. 可以使用DIH(DataImportHandler)从数据库导入数据 
  2. 支持CSV文件导入,因此Excel数据也能轻松导入 
  3. 支持JSON格式文档 
  4. 二进制文档比如:Word、PDF 
  5. 还能以编程的方式来自定义导入

2、数据更新

      solr会根据文档的字段id来唯一标识文档,如果导入的文档的id已经存在solr中,那么这份文档就被最新导入的同id的文档自动替换。管理界面的有值得关注的几个参数:Num Docs,Max Doc,Deleted Docs的变化。 

  • numDocs:当前系统中的文档数量,它有可能大于xml文件个数,因为一个xml文件可能有多个doc标签。 
  • maxDoc:maxDoc有可能比numDocs的值要大,比如重复post同一份文件后,maxDoc值就增大了。 
  • deletedDocs:重复post的文件会替换掉老的文档,同时deltedDocs的值也会加1,不过这只是逻辑上的删除,并没有真正从索引中移除掉

3、数据删除

通过id删除指定的文档,或者通过一个查询来删除匹配的文档

通过id删除指定的文档,或者通过一个查询来删除匹配的文档

java -Ddata=args -jar post.jar "<delete><id>SOLR1000</id></delete>"
java -Ddata=args -jar post.jar "<delete><query>name:DDR</query></delete>"

备注:solr也有数据库中的事务,执行删除命令的时候事务自动提交了,文档就会立即从索引中删除。你也可以把commit设置为false,手动提交事务。

java -Ddata=args  -Dcommit=false -jar post.jar "<delete><id>3007WFP</id></delete>"

执行完上面的命令时文档并没有真正删除,还是可以继续搜索相关结果,最后可以通过命令:

java -jar post.jar -

 4、查询数据

查询数据都是通过HTTP的GET请求获取的,搜索关键字用参数q指定,另外还可以指定很多可选的参数来控制信息的返回,例如:用fl指定返回的字段,比如f1=name,那么返回的数据就只包括name字段的内容

http://localhost:8983/solr/collection1/select?q=solr&fl=name&wt=json&indent=true

Solr提供排序的功能,通过参数sort来指定,它支持正序、倒序,或者多个字段排序

q=video&sort=price desc
q=video&sort=price asc
q=video&sort=inStock asc, price desc

网页搜索中,为了突出搜索结果,可能会对匹配的关键字高亮出来,Solr提供了很好的支持,只要指定参数:

hl=true #开启高亮功能
hl.fl=name #指定需要高亮的字段

 

文本字段通过把文本分割成单词以及运用各种转换方法(如:小写转换、复数移除、词干提取)后被索引,schema.xml文件中定义了字段在索引中,这些字段将作用于其中. 
默认情况下搜索”power-shot”是不能匹配”powershot”的,通过修改schema.xml文件(solr/example/solr/collection1/conf目录),把features和text字段替换成”text_en_splitting”类型,就能索引到了。

<field name="features" type="text_en_splitting" indexed="true" stored="true" multiValued="true"/>
<field name="text" type="text_en_splitting" indexed="true" stored="false" multiValued="true"/>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值