`
韩悠悠
  • 浏览: 846355 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

solr in action翻译-第三章Solr的关键概念 3.2

    博客分类:
  • solr
 
阅读更多

 

转载请声明出处,谢谢。翻译也很辛苦 

 

 

3.1.4term、短语和布尔逻辑

现在我们所看到的内容是什么样子在Lucene的反向索引,让我们跳进如何查询的机制能够利用这个索引来查找匹配文档。在本节中,我们将复习的基础知识查找术语和短语的反向搜索索引,利用布尔逻辑来增强这些和模糊查询查找功能。回顾book-searching的例子,让我们看一个简单的查询新房子,如图3.2中描述的。

 

 

3.2。简单的搜索查询的细微差别而展示解释



 

 

你看到在上一节,所有的文本在内容字段分成term时插入到Lucene索引。现在有一个传入的查询,你需要从几个选项中选择查询索引:

寻找两个不同的term ,new house ,要求这两个都匹配

寻找两个不同的term ,new house,要求只有一个匹配

寻找“new house”确切的词

 

所有这些选项都是完全有效的方法取决于你的用例,且多亏了Solr的强大的查询功能,使用Lucene,他们很容易使用布尔逻辑完成。

 

必需的条件

让我们看看第一个选项,将查询分解成多个term和要求他们所有的匹配。有两个相同的方式写这个查询使用默认查询在Solr解析器:

+new +house

new AND house

这两个逻辑上相同,事实上,第二个例子解析和最终减少到第一个例子。+符号是一元运算符意味着查询的一部分后立即应在任何存在文档匹配;和关键字是一个二元运算符,意味着的一部分查询马上前,紧跟着它的查询的一部分这两个要求。

 

优化term

相比之下,Solr还支持或二进制运算符,这意味着前查询的一部分,或者查询的一部分后它是必需的存在于任何文档匹配。默认情况下,Solr还配置了治疗的任何部分查询没有一个明确的操作符作为一个可选的参数,使下面的也是相同的:

new house

new OR house

否定方面

除了使部分查询可选的或必需的,也有可能需要他们不存在于任何匹配的文档通过下面的等价的查询:

new house –rental

new house NOT rental

在这些查询,没有文档,包含这个词租赁将返回, 文档匹配newhouse

Solr的默认操作符

在缺省配置Solr假设本身就是一个词或短语可选的词,这是可配置的每个查询的基础上使用op URL参数与许多Solr的查询处理程序。

/select/?q=new house&q.op=ORversus /select?q=new house&q.op=AND

 

注意,如果您更改默认OR AND operator,这将转向要求所有条trem定没有明确的布尔操作符。如果默认操作符或查询新房子,然后只有一个条件是必需的。如果默认的操作符和相同的查询,那么新term和房子都是必需的。你也可以显式地指定operator之间的term(如新和家庭或新或家)来覆盖默认的操作符。

短语

Solr不仅支持搜索单一条件;它还可以搜索短语,确保多个词汇顺序出现:

"new home" OR "new house"

"3 bedrooms" AND "walk in closet" AND "granite countertops"

分组表达式

除了前面的查询表达式,最后一个Solr的基本逻辑结构支持分组的术语、短语和其他查询表达式。Solr查询语法可以代表任意复杂的查询通过分组条件使用括号,比如下面的例子:

New AND (house OR (home NOT improvement NOT depot NOT grown))

(+(buying purchasing -renting) +(home house residence –(+property -bedroom)))

使用所需的条件,可选term,否定,并分组表达式提供了一组功能强大且灵活的查询功能,允许任意复杂

对搜索索引查找操作,下一节我们将看到。

3.1.5. Finding sets of documents

基本了解的术语中,短语,和布尔查询,我们现在可以深入到底如何能够使用Solr的内部Lucene反向索引匹配的文件。记得书的索引表3.5,这是的一部分复制在表3.6

 

3.6。书名的集合反向索引术语

 



 
如果客户现在传入查询是new home,Solr究竟是如何能够找到文档匹配查询,因为前面的反向索引?

 

 

 

答案是,查询的new hometwo terms查询(有一个默认的操作符new home之间,记得吗?)。这样,这两个条件必须单独抬起头在Lucene索引:

 

Term

Document

Home

2,5,7,8

new

4,5,8

一旦找到匹配的文档列表为每个术语,Lucene将执行操作到达一个适当的最终的结果集相匹配的查询。假设默认操作符是一个OR ,这个查询将导致一个结果集的联盟而言,在维恩图如图3.3

 

 



 
同样,如果查询newhome或者默认操作符被设置为AND,然后结果方面都将被计算5只返回一个结果集的文档和文档,如图3.4所示。

 



 

 

3.1.6。短语查询和词的位置

我们之前看到的,除了Lucene索引查询的条件,它是可能的查询Solr短语。回忆,index仅包含单个 term,然而,您可能想知道如何寻找完整的短语。

3.1.7。模糊匹配

预先不总是可以知道任何给定的搜索在Solr索引将会被发现,所以Solr提供执行fuzzy-matching的几种类型的能力查询。模糊匹配被定义为执行不精确的匹配条件的能力搜索索引。例如,有人可能想要搜索开始的任何单词特定的前缀(称为通配符搜索),可能想找到拼写变体在一个或两个字符(称为模糊搜索和编辑距离搜索),或可能想要互相匹配的最大距离在一定范围内的两个术语(称为接近搜索)。用例中多种类型的术语或短语整个文档搜索,查询可能存在这些fuzzy-matching功能作为一个强大的工具。

 

在本节中,我们将探讨Solr多个模糊匹配查询功能,包括通配符搜索、搜索范围edit-distance搜索和邻近搜索。

通配符搜索

最常见的一种形式的模糊匹配Solr是使用通配符。假设你想找到任何文件从字母office开始。就是一种方式创建一个查询,枚举所有可能的变化:

Query: office OR officer OR official OR officiate OR ...

要求这个单词列表变为查询可以是不合理的客户期望,甚至为你代表你的客户。

因为所有的变化可以匹配Solr索引中已经存在,您可以使用星号(*)通配符来执行同样的功能:

Query: offi* Matches office, officer, official, and so on

除了匹配的术语,可以使用通配符的内部搜索词,比如如果你想匹配官和提供:

Query: off*r Matches offer, officer, officiator, and so on

星号通配符(*)一词匹配零个或多个字符。如果你想匹配只有一个字符,可以使用问号(?)的目的:

Query: off?r Matches offer, but not officer

领先的通配符

虽然Solr的通配符功能相当强大,它可以是昂贵的执行某些通配符查询。每当一个通配符搜索被执行,所有的条款反向索引匹配的部分术语之前必须找到第一个通配符。然后,每个候选人的条件必须检查,以查看它们是否匹配通配符在查询模式。因此,您所指定的多个字符的开始这个词在通配符之前,查询应该运行得越快。例如,查询engineer*不会昂贵的(因为它匹配反向索引中的一些术语),但是查询e *将是昂贵的,因为它匹配所有条款开头字母e

 

执行一个通配符查询是一项昂贵的操作。如果您需要匹配结束term的结束 (like caring, liking, and smiling),例如,这可能会引发重大性能问题。

Query: *ing

 

如果你需要能够使用这些主要搜索通配符,更快的解决方案存在,但它需要额外的配置。解决方案是通过添加ReversedWildcardFilterFactory字段类型的链(配置文本分析第六章将讨论处理)

 

ReversedWildcardFilterFactory作品double-inserting Solr索引内容index(每个term一次文本,一旦逆转文本的每个词):

 

当提交一个查询的主要通配符* ing,Solr知道搜索逆转的版本,绕过相关的性能问题领导通配符搜索将自身改造为标准通配符搜索了内容。

 

但是请注意,把这个功能需要dual-indexing Solr的所有term已经索引,增加索引的大小和减缓整体搜索。这个功能不建议除非是需要在你的搜索应用程序。

最后一个重要的一点需要注意通配符搜索是通配符为了工作对个人搜索条件,而不是短语搜索,

下面的例子:

Works: softwar* eng?neering

Does not work: "softwar* eng?neering"

 

如果您需要执行通配符搜索的能力在一个短语,你要存储整个短语的索引作为一个词,你应该感到舒适的做在第6章末尾。

 

范围搜索

Solr还提供了搜索的能力方面,已知值之间。这可以是有用的,当你想要寻找一个特定的文档子集在下降的范围内。例如,如果你只是想匹配文档中创建六个月在201222日到, 201282, ,您可以执行以下搜索:

Query: created:[2012-02-01T00:00.0Z TO 2012-08-02T00:00.0Z]

这个范围查询格式也适用于其他字段类型:

Query: yearsOld:[18 TO 21] Matches 18, 19, 20, 21

Query: title:[boat TO boulder] Matches boat, boil, book, boulder, etc.

Query: price:[12.99 TO 14.99] Matches 12.99, 13.000009, 14.99, etc.

 

这些范围查询周围方括号的范围,这是包容性范围的语法。Solr还支持独家通过使用搜索范围花括号:

Query: yearsOld:{18 TO 21} 匹配 19 and 20 but not 18 or 21

 

尽管它可能看起来奇怪的语法,Solr还提供混合和匹配的能力包容性和排他的界限:

Query: yearsOld:[18 TO 21} Matches 18, 19, 20, but not 21

 

虽然范围搜索执行慢于在单个词的搜索,他们提供的巨大的灵活性寻找文档匹配的动态定义组值,躺在一个特定范围内的Solr索引。注意,是很重要的term范围查询的排序是:它们被发现的顺序Solr索引,这是一个按字母顺序。如果你想创建一个文本字段包含整数,整数会发现按照以下顺序:1,11,111,

12013日等。在Solr数值类型,至少我们会建议在未来的人章,弥补通过索引的内容在一个特殊的方式,但它的一定要明白,Solr索引内的排序顺序取决于如何领域内的数据处理的时候写入Solr索引。我们会潜水深入这种内容分析在章节56

模糊/ edit-distance搜索

对于许多搜索应用程序,重要的是不仅要匹配客户的文本,但也允许的灵活性处理正确拼写错误,甚至轻微的变化拼写。Solr提供了使用edit-distance处理角色变化的能力基于Damerau-Levenshtein测量距离,占比人类所有的拼写错误的80%

Solr达到这些模糊edit-distance搜索通过使用波浪号(~)字符如下:

Query: administrator~ Matches: adminstrator, administrater, administratior, and so forth

 

这个查询匹配原始术语(administrator)和其他内部条件两个编辑距离最初的术语。一个编辑距离的定义是一个插入,删除、替换或换位的字符。这一术语administrator失踪第六的位置)中的是一个编辑距离administrator因为它一个字符删除。同样的术语sadministrator将编辑距离因为它有一个插入(前缀的“s”),和术语administratro也会有一个编辑距离,因为它转置最后两个字(“变成了反渗透”)

 

还可以修改edit-distance搜索允许的严格匹配的与任何编辑距离:

Query: administrator~1 Matches within one edit distance.

Query: administrator~2 Matches within two edit distances. (This is the default if

no edit distance is provided.)

Query: administrator~N Matches within N edit distances.

请注意,任何编辑距离要求以上两个将变得越来越慢并将更有可能匹配意想不到的条款。词搜索的编辑距离使用一个有效的执行一个或两个Levenshtein自动机,但将回落慢edit-distance实现编辑距离两个以上。

接近搜索

在前一节中,我们看到了编辑距离可以用来发现术语接近原始的术语,但不是完全相同的。这edit-distance原则是在一个术语适用之外寻找替代字符;它还可以被应用条件变化之间的短语。

 

假设你想要搜索一个Solr索引的员工档案管理人员在你的公司。方法之一就是列举的每一个可能的

执行官标题在你的公司:

Query: "chief executive officer" OR "chief financial officer" OR "chief marketing officer" OR "chief technology officer" OR ...

 

当然,这假设您知道所有可能的冠军你搜索在其他公司,这是不现实的,不了解或如果你有一个更有挑战性的用例。另一种可能的策略是寻找每个术语独立:

Query: chief AND officer

 

这应该与所有可能的用例,但它也将匹配任何文档包含这两个词在文档的任何地方。一个有问题的例子是一个文档,其中包含文字:一个主要事件是引发的担忧值班警察的安全。本文档显然是一个糟糕的比赛对于我们的用例,但它和类似的糟糕的比赛将会返回给前面的查询。

值得庆幸的是,Solr提供了一个基本的解决这个问题:邻近搜索。在前一个例子,一个好的战略是让Solr带回所有的文档包含术语词附近的term。这可以通过以下示例查询:

Query: "chief officer"~1

o Meaning: chief and officer must be a maximum of one position away.

o Examples: "chief executive officer", "chief financial officer"

Query: "chief officer"~2

o Meaning: chief and officer must be a maximum of two edit distances away.

o Examples: "chief business development officer", "officer chief"

Query: "chief officer"~N

o Meaning: Finds chief within N positions of officer.

 

前面的近似搜索可以看作是草率版本的传统说法搜索。事实上,一个精确的短语搜索首席发展官很容易重写为首席发展官”~ 0。这些查询将产生相同的结果,因为零的编辑距离的定义准确短语搜索。这两个机制利用这个词位置存储在Solr索引(我们讨论3.1.6)来计算编辑距离。还应该指出的是,Solr接近搜索不是一个真正的编辑距离,因为它要求所有指定的使用term存在,而真正的编辑距离也会允许替换和删除(正如您所看到的模糊搜索一个词)

 

 

编辑距离的一般原则仍然适用于任期接近查询然而,关于术语插入和互换。沿着这条线,你可能也注意到,它要求一个短语污水2指定(“首席官”~ 2)为了官首席匹配的文本。这是因为第一个编辑首席和移动官到相同的位置,第二个编辑是首席移动一个位置前官。这再次强调了邻近搜索不使用的事实真正的编辑距离(换位只能算一个编辑),而是问:“有多少职位可以集体为了添加到文档的文本为接近指定形式的短语搜索?”

 

 

 

  • 大小: 7.3 KB
  • 大小: 24.9 KB
  • 大小: 24.4 KB
  • 大小: 18.5 KB
分享到:
评论

相关推荐

    基于ARM架构服务器部署docker-compose

    基于arm64版本的docker-compose文件

    附件3-4:台区智能融合终端全性能试验增值税发票开具确认单.docx

    台区终端电科院送检文档

    埃夫特机器人Ethernet IP 通讯配置步骤

    埃夫特机器人Ethernet IP 通讯配置步骤

    rv320e机器人重型关节行星摆线减速传动装置研发.rar

    rv320e机器人重型关节行星摆线减速传动装置研发

    气缸驱动爬杆机器人的设计().zip

    气缸驱动爬杆机器人的设计().zip

    软件工程中期答辩1234567

    56tgyhujikolp[

    基于OpenCV的数字身份验证系统:人脸检测、训练与识别的Python实现

    内容概要:本文档提供了基于OpenCV的数字身份验证系统的Python代码示例,涵盖人脸检测、训练和识别三个主要功能模块。首先,通过调用OpenCV的CascadeClassifier加载预训练模型,实现人脸检测并采集多张人脸图像用于后续训练。接着,利用LBPH(局部二值模式直方图)算法对面部特征进行训练,生成训练数据集。最后,在实际应用中,系统能够实时捕获视频流,对比已有的人脸数据库完成身份验证。此外,还介绍了必要的环境配置如依赖库安装、文件路径设置以及摄像头兼容性的处理。 适合人群:对计算机视觉感兴趣的研发人员,尤其是希望深入了解OpenCV库及其在人脸识别领域的应用者。 使用场景及目标:适用于构建安全认证系统的企业或机构,旨在提高出入管理的安全性和效率。具体应用场景包括但不限于门禁控制系统、考勤打卡机等。 其他说明:文中提供的代码片段仅为基本框架,可根据实际需求调整参数优化性能。同时提醒开发者注意隐私保护法规,合法合规地收集和使用个人生物识别信息。

    Java并发编程面试题详解:123道经典题目解析与实战技巧

    内容概要:本文档详细介绍了Java并发编程的核心知识点,涵盖基础知识、并发理论、线程池、并发容器、并发队列及并发工具类等方面。主要内容包括但不限于:多线程应用场景及其优劣、线程与进程的区别、线程同步方法、线程池的工作原理及配置、常见并发容器的特点及使用场景、并发队列的分类及常用队列介绍、以及常用的并发工具类。文档旨在帮助开发者深入理解和掌握Java并发编程的关键技术和最佳实践。 适合人群:具备一定Java编程经验的研发人员,尤其是希望深入了解并发编程机制、提高多线程应用性能的中级及以上水平的Java开发者。 使用场景及目标:①帮助开发者理解并发编程的基本概念和技术细节;②指导开发者在实际项目中合理运用多线程和并发工具,提升应用程序的性能和可靠性;③为准备Java技术面试的候选人提供全面的知识参考。 其他说明:文档内容详尽,适合用作深度学习资料或面试复习指南。建议读者结合实际编码练习,逐步掌握并发编程技巧。文中提到的多种并发工具类和容器,均附有具体的应用场景和注意事项,有助于读者更好地应用于实际工作中。

    个人健康与健身追踪数据集,包含了日常步数统计、睡眠时长、活跃分钟数以及消耗的卡路里,适用于数据分析、机器学习

    这个数据集包含了日常步数统计、睡眠时长、活跃分钟数以及消耗的卡路里,是个人健康与健身追踪的一部分。 该数据集非常适合用于以下实践: 数据清洗:现实世界中的数据往往包含缺失值、异常值或不一致之处。例如,某些天的步数可能缺失,或者存在不切实际的数值(如10,000小时的睡眠或负数的卡路里消耗)。通过处理这些问题,可以学习如何清理和准备数据进行分析。 探索性分析(发现日常习惯中的模式):可以通过分析找出日常生活中的模式和趋势,比如一周中哪一天人们通常走得最多,或是睡眠时间与活跃程度之间的关系等。 构建可视化图表(步数趋势、睡眠与活动对比图):将数据转换成易于理解的图形形式,有助于更直观地看出数据的趋势和关联。例如,绘制步数随时间变化的趋势图,或是比较睡眠时间和活动量之间的关系图。 数据叙事(将个人风格的追踪转化为可操作的见解):通过讲述故事的方式,把从数据中得到的洞察变成具体的行动建议。例如,根据某人特定时间段内的活动水平和睡眠质量,提供改善健康状况的具体建议。

    《基于YOLOv8的港口船舶靠泊角度偏差预警系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    nginx 访问访问日志按天切割 shell脚本

    nginx

    《基于YOLOv8的核废料运输容器密封性检测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    《基于YOLOv8的农业无人机播种深度监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    uniapp知识付费(流量主)demo

    模拟知识付费小程序,可流量主运营模式

    java高并发之分片上传

    什么是普通上传 调用接口一次性完成一个文件的上传。 普通上传2个缺点 文件无法续传,比如上传了一个比较大的文件,中间突然断掉了,需要重来 大文件上传太慢 解决方案 分片上传

    英二2010-2021阅读理解 Part A 题干单词(补).pdf

    英二2010-2021阅读理解 Part A 题干单词(补).pdf

    2023-04-06-项目笔记 - 第四百五十五阶段 - 4.4.2.453全局变量的作用域-453 -2025.04-01

    2023-04-06-项目笔记-第四百五十五阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.453局变量的作用域_453- 2025-04-01

    友缘公司钢材管理平台微信小程序的设计与实现.zip

    微信小程序项目课程设计,包含LW+ppt

    GP300单缸液压圆锥破碎机CAD().zip

    GP300单缸液压圆锥破碎机CAD().zip

Global site tag (gtag.js) - Google Analytics