Solr实战之(一)Solr入门_solr建模-程序员宅基地

技术标签: Solr全文检索技术  Solr  


(1)当今,软件架构所面临的一个主要挑战是处理广泛的全球群体消费和产生的大数据;为解决现代web应用的可扩展性和可用性需求,NoSQL技术受到越来越多的关注,Apache下的Solr便是一种NoSQL技术。
(2)Solr是可扩展的开箱即用的企业级搜索引擎,用来搜索大规模文本数据根据相关度排序结果
(3)Solr构建在Apache的Lucene上,Lucene是基于Java的开源信息检索库。


1.2 Solr处理的数据特征
(1)以文本为中心:搜索引擎是将文本中的隐含结构抽取出来创建索引,从而改善搜索效率的,因此以文本为中心很重要。
(2)读主导:文档被读取的次数远多于被创建和更新的次数,能实现有效读取,无须经常更新。
(3)面向文档:搜索。引擎中,文档是字段的自包含集合。
(4)灵活的模式:区别与关系型数据库,Solr索引的文档不必有统一的结构,可以有不同的字段。
以上说明了Solr不是一种通用的数据存储和处理技术,更多是对关系型数据库和NoSQL数据库的补充。


1.3 Solr的应用例子
(1)基础关键词搜索:为用户提供强大的工具执行关键词匹配搜索;
(2)基于用户查询相关度的搜索结果排名:清晰的导航方式,通过提升字段权重排名,返回“优化”文档;
使得引擎对用户的搜索意思更加“了解”;
(3)超越关键词搜索:帮助用户明确信息需求,如对搜索结果分类,方便用户缩小搜索范围(即分面搜索,引导进一步的发现和查询细分,Solr的强项之一);


1.4 Solr和Lucene的关系
Solr使用Lucene实现索引文档核心结构,Solr后台使用schema.xml将所有可能的字段和数据类型,将文档映射
成Lucene索引;而Lucene是一个Java类库,用于倒排索引(专门用于匹配查询词项与文本文档的数据结构),
Lucene查询和一般数据库查询的不同之处在于Lucene的结果是根据查询的相关度排名,而一般数据库是根据表的一列或多列进行排序。


1.5 Solr与Java Web应用
Solr是一个Java Web应用,可以运行在任何主流Java Servlet引擎中,最经典的就是小型服务器Tomcat;对于架构师而言,Solr在稳定性,可伸缩性和容错性这三方面是遥遥领先的技术;


1.6 Solr的主要功能
(1)用户体验功能:分页,排序,分面,自动建议和拼写检查,搜索结果高亮,地理空间搜索……
(2)数据建模功能:结果分组,导入各种文档格式,从关系型数据库导入数据,多语种支持……
(3)Solr4新功能:近实时搜索,使用Zookeeper实现简易分片和复制……

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36413887/article/details/79085856

智能推荐

FreeBSD 5内核源代码分析之系统调用过程_freebsd源码入口函数-程序员宅基地

文章浏览阅读1.6k次。转自:https://www.freebsdchina.org/forum/viewtopic.php?t=11068by wheelz -------------------------- 注:由于code是BBCode的关键字,在某些地方将程序中的变量code改写为_code 系统调用开始于用户程序,接着到达libc进行参数的包装,然后调用内核提供的机制进入内核。 _freebsd源码入口函数

Android在Layout中动态增加TextView,EditText控件(自定义长度)_安卓自定义textview添加动画效果-程序员宅基地

文章浏览阅读964次。package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.text.Html;import android.text.SpannableString;import android.text_安卓自定义textview添加动画效果

正则表达式创建方式和使用方式_正则.创建-程序员宅基地

文章浏览阅读724次。正则表达式创建方式:1.通过RegExp类的构造方法创建语法格式:new RegExp(pattern[,flags])pattern:必选参数,用于指定需要进行匹配的模式字符串。以\\开头。flags:可选参数,用于指定正则表达式的标志信息。g: 全局标志。如果设置了该标志,对于某个文本执行搜索或替换时,将对文 本中的所有匹配部分起作用,否则紧搜索_正则.创建

GetMessage()和PeekMessage()几个主要区别_easyx getmessage()和peekmessage()区别-程序员宅基地

文章浏览阅读464次。GetMessage()和PeekMessage()几个主要区别: 1。GetMessage()只有在接收到消息后才将控制权转给你的程序,而PeekMessage()无论有没有消息都会将控制权转给你的程序:如果有消息,返回真,没有消息返回假。 2。GetMessage()的主要功能是从消息队列中“取出”消息,消息被取出后,消息队列中就不再由该消息了;而PeekMessage()的主要功能是_easyx getmessage()和peekmessage()区别

Ubuntu21.04安装解决“ubuntu error symbol‘grub_calloc’not found”_symbol grub_calloc not found-程序员宅基地

文章浏览阅读2.5w次,点赞2次,收藏17次。Win10下:1.查看电脑的启动方式。legacy或者utfi方式。2.查看磁盘分区方式。MBR或者是GPT格式。(之前用Ultralso做的启动盘在笔记本电脑上成功安装Ubuntu,但在台式电脑上会出现“ubuntu error symbol‘grub_calloc’not found”,发现应该是磁盘分区不同方式造成的问题。)–解决方法:使用rufus选择MBR进行制作启动盘。继续安装:Ubuntu安装注意:磁盘分区时候,需要加一个EFI系统盘!!!!..._symbol grub_calloc not found

【分块入门1-9】--分块大法好-程序员宅基地

文章浏览阅读196次。分块一:给出一个长为n的数列,以及n个操作,操作涉及区间加法,单点查值。 普通分块水过#include<iostream>#include<cstdio>#include<cmath>#include<cstdlib>using namespace std;int n, a[100100], len,t..._分块技巧

随便推点

以太坊私链 利用Java 调用智能合约_contract.load 没有这个方法-程序员宅基地

文章浏览阅读1.1w次。利用Java 发布智能合约:https://blog.csdn.net/Keith003/article/details/82744534使用前需要将合约转换为java 代码 :https://blog.csdn.net/Keith003/article/details/81873154如果没有搭建本地以太坊节点可以使用云客户端 infura :https://infura.io连接以..._contract.load 没有这个方法

STM32F4 422串口通信_at32的422-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏75次。STM32F429 422串口通信_at32的422

upload-labs-第一关_uploadlabs第一关无法抓包-程序员宅基地

文章浏览阅读608次。文章目录前言客户端js验证绕过上传-(1)`Burp抓包改包总结前言客户端js验证绕过上传-(1)`让我们看看第一关说了什么基于“JS本地验证”绕过其实也就是:客户端js检查类型的上传漏洞是Web系统的上传功能在前端页面使用javascript脚本对要上传的文件进行检查,在服务器端没有进行检查,而造成的缺陷。查看源码,会发现,上传文件的格式只有三种,那么如何绕过达到实现上传我们想要上传的文件也就是我们需要达到的目的了Burp抓包改包一.为了抓包成功,我们先将写好的一句话木马文件的格式修改为._uploadlabs第一关无法抓包

基于Bootstrap+JavaEE+MySQL的办公自动化管理OA系统_bootstrap企业办公平台-程序员宅基地

文章浏览阅读158次。(3)系统数据库的设计,E-R 图,数据表的结构,数据对象的关联关系等。(6)系统基础框架的搭建,各个模块的开发与实现。第四部分是系统设计:首先根据需求分析,系统的整体设计,分为几个重要板块, 其次是系统的各种功能模块的设计,最后是数据库的设计包括了视图设计、数据表的设计,详细介绍了开发过程中系统支持的各项技术。第三部分是需求分析:通过相关人员的共同参与,在进行充分的探讨和调研后,确定系统的需求,并且加以整理,通过 UML 用例图,ER 结构图以及数据库表格的方式,突出明显也更加直观的描述系统需求。_bootstrap企业办公平台

怎样才能获得同一程序全部实例顶级窗口句柄_labview根据进程id获取窗口句柄-程序员宅基地

文章浏览阅读1.7k次。当一个含有窗口的程序只有一个运行实例的时候,可以用FindWindow函数或CWnd::FindWindow函数得到其顶级窗口句柄。但是当这个程序有多个运行实例同时运行时,FindWindow只能返回最后一个被激活的窗口句柄。怎样才能得到所有的运行实例呢(这样才可以像所有的实例发送消息么:)).这就要用到EnumWindows函数了。----------------------_labview根据进程id获取窗口句柄

解决部分华为,乐视手机听筒模式听不到声音问题_audiomanager.setspeakerphoneon部分手机不生效-程序员宅基地

文章浏览阅读1.2w次。最近项目中出现一个问题,部分华为手机,乐视手机切换到听筒模式后,听不到声音的现象,搜索了好多答案,发现都是说设置模式不对,试了好多也没有解决掉。最后发现应该是重新播放的方式不对,在一部分手机上重新播放不兼容。这是开始的代码,切换到听筒模式时调用:VoicePlayer.setAudioManagerMode(AudioManager.MODE_IN_CALL);((ChatActiv_audiomanager.setspeakerphoneon部分手机不生效

推荐文章

热门文章

相关标签