Lucene基础学习笔记
在学校和老师一起做项目,在老师的推荐下深入学习了一些SqlServer的知识,看一些书下来哎也没记住多少,不过带来了新疑问。
不使用模糊查询,我应该用什么呢?如何能不影响数据库性能,还能做模糊查询呢?所以开始对Lucene有一些简单的学习。
先举一个未必恰当的例子:
假如有一天你犯罪了,警察如何找到你呢?肯定不应该是挨家挨户的搜索你吧。
警察可能先通过户籍信息和一些档案,查询到你的住址,学校,单位,去这些地方找。如果还找不到呢?
再找你常交往的朋友,得到一些你经常去的地方,再次索引到一些地点。
总之,雁过留痕,总能通过蛛丝马迹的信息,索引到你可能在的地方。这就是在浩瀚的数据搜索中,索引,缩小范围的重要性。
Lucene是一款全文搜索引擎,它帮我们将非结构化的数据,以结构化的形式分析并存储,以便于我们能类似于数据库结构化的搜索获取到我们想要的数据。
既然要通过Lucene来搜索,那就要将数据,以Lucene搜索引擎认识的方式存储。这个存储的过程,称之为索引(动词),帮我们做这个动作的是索引引擎,帮我们查询的是查询引擎。另外文本分析引擎应该参与了查询和索引的两个动作。
Lucene以文档的形式存储,每一个文档都有唯一标识Id。一个文档基本由多个域组成, 域由域名称FieldName和域的值Value组成。
比如我们站内搜索,搜索目标是所有文章。可以将文章标题作为一个field,则其fieldName为“ArtName”字符串,其value值,为ArtName在数据库中的值。
所以文章内容,文章作者,文章发布时间,文章阅读数,文章标签等都可以放到同一个文档中的不同域。
当我们索引上述提到的字段时,不仅在我们参数指定下,设置是否存储,是否允许索引搜索。Lucene中最重要的,是其分词器将会提取词语,建立词语索引和文档id的关联。只拿文章标题来说,其他的均可类比,比如四篇文章标题,
1.佳木斯大学简介 文档Id被索引为Id1
2.计算机科学与技术专业简介 Id2
3.Java学习指南 Id3
4..Net学习指南 Id4
列举几个典型的分词索引:
| ArtName | 学习 | 3,4 |
| ArtName | 指南 | 3,4 |
| ArtName | 学习指南 | 3,4 |
| ArtName | 简介 | 1,2 |
| ArtName | 大学 | 1 |
| ArtContent (乱入一个内容Field) | Java | 4 |
| ArtName | Java | 4 |
想象一下,如果我们不建立这样的索引,搜索带Java的内容,那么一定要去遍历每一片文章。以上的索引存储过程,称为倒排索引,意味着,先分析所需存储数据的内容,并按照结构来索引存储。等到我们查询的时候,就不用每一条数据去遍历了。
上面这种分词,源于强大的分词器,Lucene本身不提供中文分词器,可以使用第三方开源的,社区中比较游优秀的,应该就是IK了,其可拓展性也是比较强的,我们可以通过在配置文件中配置新的词汇,比如“逗比”这个词,在分词器开发的时候,没有这个词,在索引的时候,则会分开索引,我们也可以很容易在配置文件中加以配置。
从中得到另一个概念:其中每一个词语,我们应称之为Term。重要的是 我们看到其中乱入的ArtContent,由于域的名称和最后一条数据不同,虽然他们的词语都是Java,但是这属于两条Term。
Term的作用是什么呢?
可以帮助我们构建查询,也就是构建一个Term,这个查询可以指定Field的Name为ArtName,Field的Value为Java。 这也就是说查询文章标题,域值为Java的数据。而不是指定文章内容域。
我们也可以构造搜索Query对象,查询Java学习指南,这样的搜索,我们需要规定,标题中一定要带Java,标题中一定要有学习,一定要有指南。这样我们搜索到的是Java学习指南而不是.Net
学习指南。
本篇记录下Luence的一些基础概念和意义。明白了这些,我想,看文档写代码应该不是困难所在。
Lucene基础学习笔记的更多相关文章
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
- handlebars.js基础学习笔记
最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...
随机推荐
- ubuntu 16.04如何生成ssh key以及如何查看ssh key
检查本地是否有SSH Key存在 在终端输入 ls -al ~/.ssh 如果输出的是: No such file or directory 那就没有ssh key 如果有就会出现这样: 生成新的SS ...
- django模型相关的知识点
定义属性 概述: django根据属性的类型确定以下信息 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表增加自动增长的主键列,每个模 ...
- Inner Functions - What Are They Good For?
Referece: https://realpython.com/blog/python/inner-functions-what-are-they-good-for/ Let’s look at t ...
- 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDB ...
- JAVA-JSP内置对象之response对象实现页面自动跳转
相关资料:<21天学通Java Web开发> response对象 实现页面自动跳转1.可以通过response对象的addHeader()方法添加一个标题为Refresh的标头,并指定页 ...
- Java之线程状态
Java线程有6种状态: 1.New(新生),使用new Thread(r)创建一个新线程时,该线程处于新生状态,新生状态会为线程的执行做一些准备. 2.Runnable(可执行),调用线程的star ...
- C语言 · 字串逆序
算法训练 字串逆序 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个字符串,将这个串的所有字母逆序后输出. 输入格式 输入包含一个字符串,长度不超过100,字符串中不 ...
- Py2.7 no module named tkinter
一个简单的例子 #! /usr/bin/env python#coding=utf-8from tkinter import *Label(text="Spam").pack()m ...
- SQL SERVER 事务和锁
内容皆整理自网络 一.事务 作者:郭无心链接:https://www.zhihu.com/question/31346392/answer/59815366来源:知乎著作权归作者所有.商业转载请联系作 ...
- UI设计 - 首页(主页)的任务
什么是首页 首页,又可以叫主页,是我们的网站或者APP的主要页面,它是我们接触的第一个页面(如果不包含闪屏页和登陆页的话). 特点 首页是一个开始的地方,我们开始真正接触网站提供给我们的内容. 首页是 ...