博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Solr
阅读量:5756 次
发布时间:2019-06-18

本文共 2246 字,大约阅读时间需要 7 分钟。

原文: Solr是一个高性能,采用Java5开发,基于Lucene-倒排索引的全文搜索服务器。 同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎. 全文搜索引擎:计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 HTTP POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,**然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。**Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

优点: 1、solr是将整个索引操作功能封装好了的搜索引擎系统(企业级搜索引擎产品) 2、solr可以部署到单独的服务器上(WEB服务),它可以提供服务,我们的业务系统就只要发送请求,接收响应即可,降低了业务系统的负载 3、solr部署在专门的服务器上,它的索引库就不会受业务系统服务器存储空间的限制 4、solr支持分布式集群,索引服务的容量和能力可以线性扩展

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

Lucene的工作原理: 索引数据的创建 从原始文件中提取一些可以用来搜索的数据(封装成各种Field),把各field再封装成document,然后对document进行分析(对各字段分词),得到一些索引目录写入索引库,document本身也会被写入一个文档信息库;

比较通用的一个中文分词器IKAnalyzer

站内搜索技术选型 1、Lucene:可以实现站内搜索。需要大量的开发工作。索引库的维护及优化。查询的优化等问题都需要我们自己来解决。不推荐使用。 2、使用第三方搜素引擎实现。使用百度实现站内搜索。免费的。索引库无法维护。适合一些小的网站。不推荐使用。 3、Solr:基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。提供了完整的集群方案,和索引库优化方案。

应用: 1.添加:

SolrServer server = new HttpSolrServer("http://localhost:8080/solr");//创建文档对象SolrInputDocument document = new SolrInputDocument();//添加域document.addField("id", "num001");document.addField("title_ik", "巧手DIY彩帘");//把document对象写入索引库server.add(document);//提交修改server.commit();复制代码

2.删除

SolrServer server = new HttpSolrServer("http://localhost:8080/solr");//删除文档server.deleteById("num001");//根据查询条件删除//server.deleteByQuery("*:*");//提交修改server.commit();复制代码

3.查询

SolrServer server = new HttpSolrServer("http://localhost:8080/solr");//创建一个查询对象SolrQuery query = new SolrQuery();//添加查询条件//query.setQuery("*:*");query.set("q", "*:*");//执行查询QueryResponse response = server.query(query);//取文档列表SolrDocumentList solrDocumentList = response.getResults();System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());//遍历列表for (SolrDocument solrDocument : solrDocumentList) {System.out.println(solrDocument.get("id"));System.out.println(solrDocument.get("product_name"));System.out.println(solrDocument.get("product_price"));}复制代码

转载地址:http://kynkx.baihongyu.com/

你可能感兴趣的文章
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
Linux-Centos启动流程
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
前端技术选型的遗憾和经验教训
查看>>
Ossim下的安全合规管理
查看>>
DelphiWebMVC框架下BPL热部署实现
查看>>
C++与MySQL的冲突
查看>>
siki学习之观察者模式笔记
查看>>
spring.net 继承
查看>>
ES6:模块简单解释
查看>>
JavaScript indexOf() 方法
查看>>
ZJU PAT 1023
查看>>