Solr

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

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

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

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

Lucene的工做原理: 索引数据的建立 从原始文件中提取一些能够用来搜索的数据(封装成各类Field),把各field再封装成document,而后对document进行分析(对各字段分词),获得一些索引目录写入索引库,document自己也会被写入一个文档信息库;服务器

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

站内搜索技术选型 一、Lucene:能够实现站内搜索。须要大量的开发工做。索引库的维护及优化。查询的优化等问题都须要咱们本身来解决。不推荐使用。 二、使用第三方搜素引擎实现。使用百度实现站内搜索。免费的。索引库没法维护。适合一些小的网站。不推荐使用。 三、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"));
}
复制代码
相关文章
相关标签/搜索