Solr的工作原理以及如何管理索引库

1. Solr的简介

​ Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

​ Solr是Apache软件基金会下的子项目之一。
在这里插入图片描述

2. 工作原理

​ solr是基于Lucence开发的企业级搜索引擎技术,而lucence的原理是倒排索引。那么什么是倒排索引呢?接下来我们就介绍一下lucence倒排索引原理。

假设有两篇文章1和2:

文章1的内容为:老超在卡子门工作,我也是。

文章2的内容为:小超在鼓楼工作。

由于lucence是基于关键词索引查询的,那我们首先要取得这两篇文章的关键词。如果我们把文章看成一个字符串,我们需要取得字符串中的所有单词,即分词。分词时,忽略”在“、”的“之类的没有意义的介词,以及标点符号可以过滤。

我们使用Ik Analyzer实现中文分词,分词之后结果为:

文章1:在这里插入图片描述

文章2:
在这里插入图片描述

接下来,有了关键词后,我们就可以建立倒排索引了。上面的对应关系是:“文章号”对“文章中所有关键词”。倒排索引把这个关系倒过来,变成: “关键词”对“拥有该关键词的所有文章号”。

文章1、文章2经过倒排后变成:
在这里插入图片描述

通常仅知道关键词在哪些文章中出现还不够,我们还需要知道关键词在文章中出现次数和出现的位置,通常有两种位置:

a.字符位置,即记录该词是文章中第几个字符(优点是关键词亮显时定位快);

b.关键词位置,即记录该词是文章中第几个关键词(优点是节约索引空间、词组(phase)查询快),lucene中记录的就是这种位置。

加上出现频率和出现位置信息后,我们的索引结构变为:
在这里插入图片描述

实现时,lucene将上面三列分别作为词典文件(Term Dictionary)、频率文件(frequencies)、位置文件 (positions)保存。其中词典文件不仅保存有每个关键词,还保留了指向频率文件和位置文件的指针,通过指针可以找到该关键字的频率信息和位置信息。

3. 使用SolrJ管理索引库

使用SolrJ可以实现索引库的增删改查操作。

3.1 添加文档

第一步:把solrJ的jar包添加到工程中。

第二步:创建一个SolrServer,使用HttpSolrServer创建对象。

第三步:创建一个文档对象SolrInputDocument对象。

第四步:向文档中添加域。必须有id域,域的名称必须在schema.xml中定义。

第五步:把文档添加到索引库中。

第六步:提交。

@Test
public void testSolrJAdd() throws SolrServerException, IOException {
   
  // 创建一个SolrServer对象。创建一个HttpSolrServer对象
  // 需要指定solr服务的url
  SolrServer solrServer = new HttpSolrServer("http://101.132.69.111:8080/solr/collection1");
  // 创建一个文档对象SolrInputDocument
  SolrInputDocument document = new SolrInputDocument();
  // 向文档中添加域,必须有id域,域的名称必须在schema.xml中定义
  document.addField("id", "123");
  document.addField("item_title", "红米手机");
  document.addField("item_price", 1000);
  // 把文档对象写入索引库
  solrServer.add(document);
  // 提交
  solrServer.
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值