欢迎投稿

今日深度:

lucene\solr,

lucene\solr,


搜索引擎提供的是一种检索服务

1.用爬虫从网络上爬取数据,然后对数据进行处理后保存.建立数据的索引库.
2.编写一个索引引擎程序,根据用户的输入,从索引库查询索引,返回相应的数据

使用原始数据库的弊端
1.当数据量非常大的时候,检索是非常慢的
2.模糊查询只能首尾匹配,输入的必须是一个精确的词,如果数据库中的内容和这个词的内容模糊匹配不上,就查询不出内容
3.用户输入错误的内容搜索出的结果,可能是没有,也可能不是想要的

倒排索引:就是将我们的数据(文字)进行分词,建立索引,当我们搜索的时候,在讲搜索的内容进行分词,分别从索引库进行查询,最后返回给我们包含这些索引的按匹配度排序的内容

Lucene是一个全文检索引擎的工具包,是一个框架,并不是一个完整的引擎

solr是一个企业级的搜索引擎,底层是Lucene

lucene打开索引库的方式默认是 create_or_append 没有就创建,有就追加

Lucene中的文档对象相当于sql中的一张表,只不过这一张表中只有一条数据,它的每个字段就相当于表的每个字段

Lucene索引库直接看是乱码的,需要借助于工具

中文分词我们用ik分词器

Lucene中一个字段被分词肯定被索引

Lucene在建立索引的时候,是否保存的选项意思是整个字段是否作为一个整体索引的意思,及时选择不保存,文档中保存了该内容,还是能搜索出来的

查询时候用的分词器和写入索引时候的分词器要一致

termQuery词条查询 词条是一个不可分割的整体,写错了,或者索引库中没有就查不到

wildCardQuery通配符查询 ?代表一个字符 *代表0或多个字符

fuzzQuery模糊查询 最大2次修改可以还原就可以查询到,可以设置最大修改次数 值在0-2之间

numericRangeQuery 数值范围查询 该查询可以查询数值类型的字段,可选择起始值以及是否包含起始值

BooleanQuery 组合查询,它本身什么查询条件都没有 可以添加其他查询,并且设置需要度 must必须 must_not 必须没有 should 可以有可以没有

高亮在Lucene中是一个单独的模块,单独的jar包
高亮的设置和获取都是单独的,最后用获取到的高亮内容替换原来普通的内容

高亮设置时的参数需要查询条件,它关心的是查询的内容,不关心查询的是哪个字段

高亮的获取关心字段问题,因为此时文档都出来,我么也知道了查询的关键字,就是看把哪个字段中的关键字给高亮出来,替换原来的内容
所以获取高亮的时候,需要提供字段和字段的原有内容

Lucene中没有任何的分页,只能自己模拟

lucene中的字段可以设置激励因子,默认的激励因子都是1

lucene的索引的修改(先删除,后添加),先新建一个文档,然后传入要替换的词条在哪个字段含有什么样的值的 文档都删除掉 再新增一个我们的文档

索引的删除可以全部删除,也可以根据条件删除

solr是一个独立的企业级的搜索服务器

solr中添加和修改可以使用documents这个功能 id修改不变再次添加就是修改

id字段是solr文档的主键字段,必须设置
dynamicField动态域 solr中无法将全部字段都定义好,此时为了保证程序的可扩展性,添加文档的时候,保证字段名称后缀和动态域的名称后缀一致就可以添加任意字段

copyField复制域 主要是用来做搜索的 可以将其他多个字段的数据合并到一个字段,这样查询此字段时就相当于查询了其他多个字段
source 复制的那个字段 dest 目标字段

fieldType字段类型 其中可以指定该类型字段的分词器

solr中要引入ik分词器的步骤
1.导入ik分词器的jar包
2.在solr的WEB-INF目录下的classes目录下放入ik分词器的配置文件
3.在schema.xml配置文件中 为相应的字段类型设置ik分词器
4.为指定的字段设置此字段类型

solrj是Apache开发的一个java程序连接solr服务器的工具包,使用solrj就可以对solr服务器中的数据进行curd

使用的话首先导入一个solrJ的包 以及一个日志包 因为solr用这个日志包

浏览器上的url地址是 localhost:8080/solr/#/collection1 这是浏览器的访问地址 我们的java程序的访问地址没有中间的#

solr中的多值就相当于我们java中的数组

solrServer添加完毕后记得要提交

相似度查询使用~ 最大编辑次数2次 ~后面加数字代表规定最大编辑次数 如果用户输入的东西里面有~ 把用户输入的内容整体单引号括住即可

范围查询 age:[18 TO 20] 外面必须是中括号 里面的TO必须大写

solr是一个独立的企业级应用服务器,所以必须使用web容器来启动,我们一般使用的是tomcat

solrcloud是solr提供的分布式搜索方案,用于大规模\容错\分布式索引和检索

zookeeper是一个集群管理软件,协调管理集群中的多台服务器

solr中的core就是索引库的意思

solrCloud最简单的就是有三个solr服务器,每个服务器中有两个索引库
每个索引库中存放了一个分片,三台中有两台是主服务器(每个分片都对应一个主服务器)

solrcloud中写入索引的操作流程
1.用户可以把文档提交给任意一个replica
2.如果提交的副本不是一个主节点,那么会转发给本分片的主节点,本分片的主节点写入后,会复制给本分片的从节点.
3.如果文档基于路由规则并不属于本分片,则leader会将请求转交给对应分片的主节点
4.对应分片的主节点在写入数据后再复制给对应分片的从节点

solrcloud的索引查询机制
1.用户可以将查询请求提交到任意一个机器,solr内部会转发到任意一个replica
2.该replica会根据查询索引的shard个数启动分布式查询,分别从每个shard的任意一台服务器上进行子查询,并合并多个查询结果,将最终结果返回给用户

zookeeper是一个为分布式应用提供一致性服务的软件

zookeeper在solrCloud中的作用,主要是用来管理solr集群的相关配置信息和集群运行状态,协助solr进行主节点的选举

多台主机之间主机名的映射,应该是多台主机都配置多台主机的映射关系而不是自己配自己的,这样全部主机都可以识别其他主机的主机名了

zookeeper配置文件中server.1=Hadoop1:2887:3887 第一个端口是zookeeper之间通讯的,第二个端口是集群中solr之间相互通讯的

linux上解压Zip压缩文件的命令是 unzip

solr单机版配置成功以后,开始配置solr集群,需要把solr的配置文件交给zookeeper去管理
把solr安装包上传linux,执行其中solrCloud脚本 zkClient.sh 指定主机 指定配置文件 指定配置文件的名字

www.htsjk.Com true http://www.htsjk.com/solr/37375.html NewsArticle lucene\solr, 搜索引擎提供的是一种检索服务 1.用爬虫从网络上爬取数据,然后对数据进行处理后保存.建立数据的索引库. 2.编写一个索引引擎程序,根据用户的输入,从索引库查询索引,返回...
相关文章
    暂无相关文章
评论暂时关闭