为什么 Lucene QueryParser 需要分析器

2024-03-19

我是 Lucene 的新手,正在尝试将原始字符串解析为Query使用QueryParser.

我想知道为什么QueryParser.Parse()方法根本需要分析器参数吗?

如果分析与查询有关,那么Analyzer处理常规时应指定Query对象以及(TermQuery, BooleanQuery等),如果不是,为什么QueryParser需要吗?


建立索引时,Lucene 将文本划分为原子单元(标记)。在此阶段可能会发生很多事情(例如小写、词干、删除停用词等)。最终结果是一个术语。

然后,当您查询时,Lucene 对查询应用完全相同的算法,以便它可以将术语与术语进行匹配。

问:为什么不TermQuery需要分析仪吗?
A: QueryParser对象解析查询字符串并生成TermQuery(还可以产生其他类型的查询,例如PhraseQuery). TermQuery已包含与索引中形状相同的术语。如果您(作为一名程序员)绝对确定自己在做什么,您可以创建一个TermQuery你自己——但这假设你知道查询解析的确切顺序,并且你知道术语在索引中的样子。

问:为什么不BooleanQuery需要分析仪吗?
A: BooleanQuery只需使用运算符(AND/OR/MUST/SHOULD 等)连接其他查询。如果没有任何其他查询,它本身并没有多大用处。

这是一个very简化的答案。我强烈推荐阅读信息检索简介 http://nlp.stanford.edu/IR-book/书;它包含编写 Lucene(和其他类似框架)所依据的理论。这本书可以在线免费获取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Lucene QueryParser 需要分析器 的相关文章

  • 使用 Apache Lucene 对 MySQL 数据库建立索引,并保持它们同步

    当MySQL中添加一个新项目时 它也必须被Lucene索引 当现有项目从 MySQL 中删除时 它也必须从 Lucene 的索引中删除 这个想法是编写一个脚本 通过调度程序 例如 CRON 任务 每 x 分钟调用一次 这是保持 MySQL
  • 重用 Runnable 的最佳方式

    我有一个实现的类Runnable目前我正在使用 Executor 作为线程池来运行任务 将文档索引到 Lucene executor execute new LuceneDocIndexer doc writer 我的问题是我的 Runna
  • 避免在重建期间删除当前的 Lucene.NET 索引

    我是 Lucene NET 的新手 但我正在使用一个开源工具 http trac sitecore net AdvancedDatabaseCrawler 为Sitecore CMS http www sitecore net它使用 Luc
  • iPhone版本兼容性扫描仪

    好吧 我开发 iPhone 应用程序已经一年多了 但有一件事仍然很糟糕 假设我想让我的应用程序与 iOS 3 0 兼容 我将 sdk 设置为可用的最新版本 并将部署目标设置为 3 0 但是 如果您不小心调用了仅在 3 1 x 或更高版本中可
  • 包 org.apache.commons.io 不存在错误

    我正在使用 ant 编译器编译 java 文件 我收到以下错误 包 org apache commons io 不存在错误 我下载了 apache Commons IO 二进制文件并将 jar 文件粘贴到 C Program Files J
  • Lucene 上打开的文件太多错误

    我正在进行的项目是对一定数量的数据 长文本 建立索引 并将它们与每个时间间隔 大约 15 到 30 分钟 的单词列表进行比较 一段时间后 比如说第 35 轮 在开始索引第 36 轮的新数据集时 发生了此错误 ERROR 2011 06 01
  • lucene:如何添加不重复的文档

    就我而言 插入 lucene 索引的每个文档都有其唯一的 ID 当向lucene索引添加新文档时 如果该文档已经存在于索引中 则不应将该文档插入到索引中 如何实施这一战略 我想我应该先用docId搜索文档 如果lucene找不到该文档 那么
  • Lucene外来字符问题

    我在使用 Zend Lucene 和 等外来字符时遇到了一些严重的问题 这些问题在创建索引和查询索引时都会出现 我已经尝试过 iso 8859 1 和 utf 8 ISO 8859 1 不起作用的查询看起来像 area sk ne 使用 Z
  • Lucene 评分:在什么情况下使用 queryNorm?

    我对 lucene 的评分策略有点困惑 我知道Lucene的评分公式是这样的 score q d coord q d x queryNorm q X SUM
  • MultiFieldQueryParser 正在从首字母缩略词中删除点

    我再次发布这个问题 因为我的查询没有得到答复 我正在使用 Lucene 开发图书搜索 api 用户可以搜索标题或描述字段包含 C F A 的书籍 我正在使用 StandardAnalyzer 以及停用词列表 我使用 MultiFieldQu
  • 如何运行和理解CUDA Visual Profiler?

    我已经设置了 CUDA 5 0 并且我的 CUDA 项目运行良好 但我不知道如何使用 Visual Profiler 分析我的 CUDA 项目 如何运行它 我还需要安装更多吗 又该如何做呢 我的电脑使用Window 7 64位 CUDA 5
  • Lucene.Net 下划线导致令牌分裂

    我已将 MsSqlServer 数据库表 视图和存储过程编写到目录结构中 然后使用 Lucene net 对其进行索引 我的大多数表 视图和过程名称都包含下划线 我使用标准分析器 如果我查询名为 tIr 的表例如 发票 tnWtn01 我收
  • Solr协会

    最近几天我们正在考虑使用 Solr 作为我们选择的搜索引擎 我们需要的大多数功能都是开箱即用的或者可以轻松配置 然而 我们绝对需要的一项功能似乎在 Solr 中被很好地隐藏 或缺失 我将尝试用一个例子来解释 我们有很多实际上是企业的文件
  • lucene 如何与 Neo4j 配合使用

    我是新来的Neo4j and Solr Lucene 我读到我们可以在 Neo4j 中使用 lucene 查询 这是如何工作的 Neo4j中使用lucene查询有什么用 我还需要一个建议 我需要编写一个应用程序来搜索和分析数据 which
  • lucene 3.5中分组和facet有什么区别

    我在lucene 3 5 contrib文件夹中发现了两个插件 一个是分组 另一个是facet 在我的选择中 它们都用于将我的文档分为不同的类别 为什么 lucene 现在有两个插件呢 它们是两个不同的 lucene 特性 Grouping
  • 在休眠搜索中使用现有分析器AnalyzerDiscriminator

    Entity Indexed AnalyzerDefs AnalyzerDef name en tokenizer TokenizerDef factory StandardTokenizerFactory class filters To
  • 匹配拉丁脚本中包含少于 10 个单词的两个字符串的最佳算法是什么

    我正在比较歌曲标题 使用拉丁字母 尽管并不总是 我的目标是一种算法 如果两个歌曲标题看起来相同 则给出高分 如果它们没有任何共同点 则给出很低的分数 现在我已经必须使用 Lucene 和 RAMDirectory 编写代码 Java 来编写
  • 特定查询出现错误

    Lucene 的新手 我在 java 客户端中将它与 Hibernate 一起使用 并且在特定查询上收到此错误 HSEARCH000146 The query string a applied on field name has no me
  • 使用条件查询限制加入休眠搜索查询

    我想知道您如何将以下两个查询连接在一起 标准条件查询 Criteria result1 session createCriteria Store class add Restrictions eq department name categ
  • solr 不标记受保护的单词

    我在 Solr Lucene 3 x 中有一个文档 其中有一个特殊的复制字段facet headline 以便有一个用于分面的未词干字段 有时两个或以上的单词属于在一起 这应该被处理 算作一个单词 例如 kim jong il 因此标题 星

随机推荐

  • 使用新的 Spring UriComponentsBuilder 进行 URL 编码

    我正在尝试使用 spring 的 UriComponentsBuilder 来生成一些用于 oauth 交互的 url 查询参数包括回调url 带空格的参数值等实体 尝试使用 UriComponentBuilder 因为 UriUtils
  • 如何创建关联矩阵

    我正在尝试创建 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 S 1
  • 如何将RequiredFieldValidator添加到DropDownList控件?

    我有一个DropDownList与一个绑定SqlDataSource显示数据库中的值 我无法使用RequiredFieldValidator 大多数情况下 您将其视为正在验证任何其他类型的控件 但使用所需字段验证器的 InitialValu
  • 在 Swift 中显示当前位置并更新 MKMapView 中的位置

    我正在学习如何使用新的 Swift 语言 只有 Swift 没有 Objective C 为此 我想用地图做一个简单的视图 MKMapView 我想查找并更新用户的位置 就像在 Apple 地图应用程序中一样 我尝试了这个 但什么也没发生
  • 如何从链接到 QTableView 的模型中插入和删除行

    The removeRows 通过删除选定的行来按预期工作 但有一个问题insertRows 由于某种原因 新项目不会出现在所选索引号处 是什么原因导致这个问题呢 from PyQt4 QtCore import from PyQt4 Qt
  • Matplotlib:如何设置当前图形?

    希望这是一个简单的问题 但我目前无法弄清楚 我想使用 matplotlib 显示 2 个数字 然后交互式地使用它们 我用以下方法创建数字 import matplotlib import pylab as pl f1 pl figure f
  • Heroku 零停机时间

    是否可以做类似的事情Github 零停机部署 https github com blog 517 unicorn在 Heroku 上使用 Cedar 堆栈上的 Unicorn 我不完全确定 Heroku 上的重启是如何进行的 以及我们对重启
  • 从我的本地计算机附加文件以在 cq/AEM 中发送邮件

    我正在学习 AEM 并且正在满足一个要求 其中我能够发送电子邮件 但无法添加从我的计算机浏览的附件 要求 有一个用 HTML 制作的表单 可以从其中收集信息 并且有一个浏览按钮 可以从其中上传文件 文件上传后 应立即将包含表单内容和附件的电
  • 使用 selenium webdriver 按类名和标记名查找元素

    有类和标记名 我正在编写下面的硒代码以从下面的代码中查找描述 但它不起作用 WebElement WWdescription driver findElement By className atb delivery accordions c
  • Swift:如何在“String”扩展中添加类方法

    我想在扩展中添加一个类函数 extension String class func test 我收到错误 Class methods are only allowed within classes use static to declare
  • 如何在两点之间填充数组列表?

    我有这段代码 解释 用户输入 initcores 数据和 time 数据 forces 是结果 我想用从 0 到 ttime 的值填充 x 数组 用 y 填充 initcores 到 fcores 并绘制散点图 x 与 y 我有一个问题 如
  • Latex:\bibliographystyle{abbrv} 根据外观排序引用[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用 Latex 的 bibliographystyle abbrv 命令作为参考 但引用的顺序并不按照它们在文档中出现的顺序 无论如何
  • MySQLi 准备好的语句返回 false

    我正在尝试使用 MySQLi 在我的数据库上运行多个查询 这是我的代码 stmt mysqli gt prepare SELECT password FROM users WHERE username LIMIT 1 stmt gt bin
  • 无法生成 qdoc 文档

    按照本指南操作http doc snapshot qt project org qdoc qdoc guide conf html http doc snapshot qt project org qdoc qdoc guide conf
  • C++比较C字符串的麻烦

    我编写了以下代码 该代码不起作用 但当我更改它时 第二个代码片段将起作用 int main int argc char argv if argv 1 i This is what does not work Do Something 但如果
  • scafford自动生成crud存储库asp.net5

    您好 我正在使用 Visual Studio 2015 我知道我们可以通过添加新的来生成 CRUD 视图控制器和操作scafford物品 但是代码生成不是很有用 似乎所有数据层都依赖于控制器 所以我的问题是 任何使用脚手架的方法都会生成代码
  • 干燥 if 语句

    我有一个 C 程序 在许多不同的 cpp 文件中 我执行如下操作 if thing1 empty thing2 empty if thing1 property lt thing2 property return func1 else if
  • Windows 上 Symfony 5.0.1 控制台中已弃用的类警告

    执行后php bin console make 实体 用户实体 或php bin console make 迁移我在控制台中收到这些警告 2019 12 13T15 49 53 00 00 info User Deprecated The
  • Angular 2 - 组件内的 formControlName

    我想创建一个可以与 FormBuilder API 一起使用的自定义输入组件 我该如何添加formControlName在组件内部 模板
  • 为什么 Lucene QueryParser 需要分析器

    我是 Lucene 的新手 正在尝试将原始字符串解析为Query使用QueryParser 我想知道为什么QueryParser Parse 方法根本需要分析器参数吗 如果分析与查询有关 那么Analyzer处理常规时应指定Query对象以