博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全文检索 -- Solr从概念到实战(一)
阅读量:6123 次
发布时间:2019-06-21

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

 

全文检索:

将整个文本进行“分词”处理,在索引库中为分词得到的每一个词都建立索引,和用户搜索的关键词进行匹配。实现快速查找效果。

传统sql语句实现的局限性:

select song_id,song_name,song_singer,song_album

from table_song

where song_name like “%神话%” or song_album like “%神话%” or song_lyric like “%神话%

效率低,影响性能。

数据库使用索引有无的区别:

i. 不使用索引

从字典中查“王”:从正文的第一页开始,逐页检查,看当前页中是否有“猪”这个字。要是没有再翻下一页。

ii. 使用索引

从字典中查“王”:先根据这个字的拼音或偏旁部首在“检字表”中找到这个字所在的页码,例如是857页,然后直接翻到857页,找到这个字。

全文检索技术:

Lucenesolr

索引库的结构:

索引库中的内容并不是一张完整的数据库表,因为有些内容在查询结果列表中不显示,所以不需要放在索引库中。

字段域的创建:

常用类型:

  1. IntField
  2. StringField
  3. TextField

分词的概念

 

把一句话/一篇文章拆分成一个一个单个的词,并在内部统计每个词出现的频率,以此为依据进行后续的查询搜索。

 

Good morning lily

[good]

[morning]

[lily]

我爱炒鸡蛋

[]       []

[]       []

[]       [炒鸡蛋]

[鸡蛋]

 

不分词的例子:“地址”字段中的“深圳”数据就不需要分词。不分词的字符串类型就使用StringField,分词的字符串就使用TextField

 

建立索引

在索引库内部,将一个具体的索引值和文档中分词的结果关联起来,在搜索时使用索引可以快速定位到对应的词,进而快速定位到词所在的文档。

只有需要和搜索关键词匹配的字段才需要建立索引。

需要建立索引的字段例子:根据“神话”这个关键词搜索“song_name”字段中“神话”这条记录。

不需要建立索引的字段的例子:图片的路径/aaa/bbb/ccc/pic10.png所在的picture_path字段不需要建立索引。

 

字段的相关属性

  1. 数据类型:intdouble、字符串等等

  2. 是否分词

    1. 要分词:包含很多词的一句话
    2. 不分词:分词之后失去本来的含义
  3. 是否建立索引

    1. 要建立索引:用户会根据关键词搜索这个字段
    2. 不建立索引:用户不会根据关键词搜索这个字段
  4. 是否存储

    1. 要存储:在查询结果列表中要显示,或会用到

    2. 不存储:在查询结果列表中不显示也不会用到

 

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

你可能感兴趣的文章
【294】◀▶ Python 字符串说明
查看>>
ORA-12541:TNS:no listener 客户端tnsnames.ora配置,以及服务端listener.ora配置
查看>>
mudbox安装未完成,某些产品无法安装的解决方法
查看>>
excel 2007 无法输入中文
查看>>
POJ 3279
查看>>
Effective C++学习之-------若所有参数皆需类型转换,请为此采用non-member函数
查看>>
VM Depot 助您使用本地开源软件架设开发 Web 站点
查看>>
What’s new in Spark 1.2.0
查看>>
[LeetCode] 6. ZigZag Conversion
查看>>
Ansible
查看>>
VirtualBox实现宿主机和虚拟机之间网络的通讯
查看>>
Django--中间件
查看>>
openshift pod对外访问网络解析
查看>>
C++系列总结——mutable关键字
查看>>
JavaScript_1
查看>>
python3+selenium入门01-环境搭建
查看>>
Sharding-JDBC 使用入门和基本配置
查看>>
Fast Search For Sharepint 2010 安装部署
查看>>
Delphi2010如何获取程序内部自身版本号?
查看>>
Oracle网格控制器OMA安装和配置指南
查看>>