全文检索 -- Solr从概念到实战(一)
全文检索:
将整个文本进行“分词”处理,在索引库中为分词得到的每一个词都建立索引,和用户搜索的关键词进行匹配。实现快速查找效果。
传统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页,找到这个字。
全文检索技术:
Lucene和solr
索引库的结构:
索引库中的内容并不是一张完整的数据库表,因为有些内容在查询结果列表中不显示,所以不需要放在索引库中。
字段域的创建:
常用类型:
- IntField
- StringField
- TextField
分词的概念
把一句话/一篇文章拆分成一个一个单个的词,并在内部统计每个词出现的频率,以此为依据进行后续的查询搜索。
Good morning lily
[good]
[morning]
[lily]
我爱炒鸡蛋
[我] [我]
[爱] [爱]
[炒] [炒鸡蛋]
[鸡蛋]
不分词的例子:“地址”字段中的“深圳”数据就不需要分词。不分词的字符串类型就使用StringField,分词的字符串就使用TextField。
建立索引
在索引库内部,将一个具体的索引值和文档中分词的结果关联起来,在搜索时使用索引可以快速定位到对应的词,进而快速定位到词所在的文档。
只有需要和搜索关键词匹配的字段才需要建立索引。
需要建立索引的字段例子:根据“神话”这个关键词搜索“song_name”字段中“神话”这条记录。
不需要建立索引的字段的例子:图片的路径/aaa/bbb/ccc/pic10.png所在的picture_path字段不需要建立索引。
字段的相关属性
数据类型:int、double、字符串等等
是否分词
- 要分词:包含很多词的一句话
- 不分词:分词之后失去本来的含义
是否建立索引
- 要建立索引:用户会根据关键词搜索这个字段
- 不建立索引:用户不会根据关键词搜索这个字段
是否存储
要存储:在查询结果列表中要显示,或会用到
不存储:在查询结果列表中不显示也不会用到
全文检索 -- Solr从概念到实战(一)的更多相关文章
- 转:手把手教你如何玩转Solr(包含项目实战)
原文地址:手把手教你如何玩转Solr(包含项目实战) 参考原文
- MongoDB入门必读(概念与实战并重)
MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...
- 全文检索引擎Solr系列——Solr核心概念、配置文件
Document Document是Solr索引(动词,indexing)和搜索的最基本单元,它类似于关系数据库表中的一条记录,可以包含一个或多个字段(Field),每个字段包含一个name和文本值. ...
- mongoDB入门必读(概念与实战并重)
一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是 ...
- requireJS 从概念到实战
requireJS 可以很轻易的将一个项目中的JavaScript代码分割成若干个模块(module).并且requireJS推荐一个模块就是一个文件,所以,你将获得一些零碎的具有互相依赖关系的JS文 ...
- 全文检索(SOLR)前端应用浅析 (转)
最近在一个关于知识管理系统中检索的一个功能方案,找到了一个很好的参考应用方案嘎要的分析一下,希望有类似应用的可以交流交流. 提起全文检索,Lucene的大名估计地球人都知道,通过这么多年的发展,外围的 ...
- 全文检索~solr的使用
全文检索这个系列在几前年写过lucene的文章,而现在看来它确实已经老了,它的儿子孙子都出来了,已经成为现在检索行列的主流,像solr,elasticsearch等,今天我们主要来看一个solr在as ...
- Hybrid App从概念到实战
最近一直在准备找工作,看了很多公司的招聘介绍,有相当一部分直接写:熟悉 Hybrid App 开发加分!正好,我司开发的就有这种 Hybrid App--使用WebViewJavascriptBrid ...
- solr课程学习系列-solr的概念与结构(1)
Solr是基于Lucene的采用Java5开发的一个高性能全文搜索服务器.源于lucene,却更比Lucene更为丰富更为强大的查询语言.同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个 ...
随机推荐
- 批量处理word所有回车行
在WORD中点击CTRL+H,弹出对话框,输入如下替换符
- centos6.8 安装wget
1.执行yum -y install wget 提示:没有相应的包.原因:默认最小化安装没有装wget,而且默认源中没有wget,所以只能先切换源配置. (1)下载.阿里的源配置,并放到/etc/yu ...
- scrapy架构简介
一.scrapy架构介绍 1.结构简图: 主要组成部分:Spider(产出request,处理response),Pipeline,Downloader,Scheduler,Scrapy Engine ...
- Slave_SQL_Running:No的两种解决办法
进入slave服务器,运行: mysql> show slave status\G ....... Relay_Log_File: localhost-relay-bin. Relay_Log_ ...
- Java集合和数组的区别
参考:Java集合和数组的区别 集合和容器都是Java中的容器. 区别 数组特点:大小固定,只能存储相同数据类型的数据 集合特点:大小可动态扩展,可以存储各种类型的数据 转换 数组转换为集合: A ...
- fiddler学习笔记2 字段说明;移动设备、解密证书
# : 抓取顺序从1开始递增 result: http 请求状态 protocol: 请求使用的协议如:http https ftp Host: 请求地址 ...
- vue起步和模板語法
vue構造器里有哪些內容: var a=new Vue({}) 模板語法: 文本插值: html: html的屬性里的值應該使用v-bind: 表達式: 指令; 參數:v-bind,v-on 雙向用戶 ...
- PHP涉及到的英文单调
slashes [slæʃeis]:斜线 uppercase ['ʌpəˌkeɪs]:大写字母,简写uc strip [strɪp]:去掉 trim [trɪm]:整理(修剪) explode [ɪk ...
- LODOP字体不识别 英文字母连起来 引号不正常
打印超文本的时候,有时候会发现html中设置的css样式显示不正常,字体根本不是设置的字体,这种情况有可能是:1.该操作系统没有安装自己指定的那种字体,那么没有安装自然就不能显示设置的字体.2.该操作 ...
- 为WebRTC 应用部署Turn Server
部署WebRTC 或 SIP p2p 方案时经常会遇到p2p 无法穿透的环境, 这时就是TunServer 的用武之地了. 这里我们使用turnserver-0.7.3 下载confuse依赖库 wg ...