如何在 Lucene 中存储多种不同类型的文档

2023-12-24

我有一个现有的 Lucene 存储,其中包含数百万个文档,每个文档都代表一个实体的元数据。我有几个 Id 字段(Id1、Id2 .. Id5),每个文档可以有零个或多个该字段的值。一次只能由这些 Id 之一查询该索引。我已经独立地对这些字段建立了索引,并且一切都工作得很好。我最初选择使用 Lucene,因为它是迄今为止查询如此大量小文档的最快方法,我对我的决定感到满意。

然而现在我必须存储另一种类型的文档,它也代表实体的不同类型的元数据,并且具有 (Id1, Id2 .. Id5) 的值,并且也将由这些 Id 之一单独查询。现有元数据和这组新数据将彼此独立地存储和查询。

如何通过 Id 查询 Lucene,但仅针对一种类型的文档。我可以想到一些选择,但我想知道知情者根据经验建议什么,以保持 Lucene 的可管理性和快速性。

  1. 使用单独的 Lucene 索引。这可以避免该问题,因为文档类型是正交的。还有一个好处是能够单独读取和写入索引。
  2. 将新文档的 Id1..Idn 字段重命名为 XId1...XIdn。这样,一种类型的文档将不会与另一种类型的文档具有相同的字段名称。这似乎更像是避免问题的解决方法,而不是实际的解决方案。
  3. 添加数字字段“Type”并将索引更改为(Type,Idx)。这种方法似乎很浪费,因为每个索引还必须包含类型。

我能够破坏与现有设置的向后兼容性。如果我来添加另一种文档类型时可以重用该解决方案,那就太好了。


我肯定会拒绝第三种选择,因为选择性低type指数。中只有 2 个不同的值type每一项都包含数百万份文档。 Lucene 需要将这个巨大的发布列表与来自的短发布列表合并idN索引,它仍然可以非常快,但确实很浪费。

前两种方法在查询阶段实际上是相同的,因为对于独立类型的文档,您有不同的术语和发布列表。差异将出现在索引阶段。管理多个独立索引需要更多的协调,并使代码变得更加困难。然而,如果您计划在不同的上下文中使用索引,这可能是一个好主意。例如:

  • 物理位置;
  • 备份策略;
  • 可用性要求;
  • 索引时间要求(从客户端更改文档到在索引中可见的时间)

否则,我会选择第一个选项,因为它更简单且易于管理。

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

如何在 Lucene 中存储多种不同类型的文档 的相关文章

  • Umbraco 检查 - 查询问题

    我使用 检查 检索的对象具有以下数据值 图片链接 https i stack imgur com 8sUOb jpg为了更方便查看 Icon icon shopping basket alt 2 color red IndexType co
  • “你的意思?” Lucene.net 中的功能

    有人可以告诉我如何在 Lucene net 中实现 您是说 功能吗 Thanks 你应该调查一下拼写检查器 https svn apache org repos asf lucene lucene net trunk C 23 contri
  • symfony 中的 Doctrine 可搜索行为与 Zend Lucene

    我需要在2个表中搜索关键字 简单的事情 我尚未决定使用其中之一吗 有什么建议吗 Thanks 正如 cuhuak 提到的 Lucene 是全文搜索 由于它是用 Java 编写的 因此您还需要一个 Java 服务器 例如 Tomcat 如果您
  • Lucene 中的关键字(OR、AND)搜索

    我在我的门户 基于 J2EE 中使用 Lucene 来提供索引和搜索服务 问题出在Lucene的关键字上 当您在搜索查询中使用其中之一时 您会收到错误消息 例如 searchTerms ik OR jij 这工作正常 因为它会搜索 ik o
  • 在 Elasticsearch 和 Lucene 4.4 中使用 Shingles 和停用词

    在我正在构建的索引中 我有兴趣运行查询 然后 使用方面 返回该查询的带状疱疹 这是我在文本上使用的分析器 settings analysis analyzer shingleAnalyzer tokenizer standard filte
  • Lucene 查询解析器在查询条件中带有“/”

    当我尝试在 Lucene 中搜索诸如 解决方法 修复 之类的内容时 它会抛出此错误 org apache lucene queryparser classic ParseException Cannot parse workaround f
  • 为什么路由不能与 ElasticSearch Bulk API 一起使用?

    我正在向 ElasticSearch 设置批量请求并指定要路由到的分片 但是当我运行它时 文档会被发送到不同的分片 这是 ElasticSearch 批量中的错误吗 当我只索引单个文档时它就有效 当我搜索时它有效 但当我进行批量导入时则不然
  • lucene.net 排序不起作用访问冲突

    我正在尝试在 lucene 中对结果进行排序 但是我不断收到此错误 Search dll 中发生 System AccessViolationException 类型的未处理异常 附加信息 尝试读取或写入受保护的内存 这通常表明其他内存已损
  • Solr:如何动态提升有限数量的文档? QueryElevationComponent 是否需要修改?

    我的要求是提升数量有限针对用户请求的 例如五个 文档 我有的是一个文档字段它存储类似于表示增强值的数值电梯排名值 因此 用户查询将返回 5 个具有最高电梯排名值的文档 其余文档按常规顺序填充页面 怎么做 The QueryElevation
  • 如何查询SOLR中的空字段?

    我有一个很大的 solr 索引 我注意到一些字段没有正确更新 索引是动态的 这导致某些字段具有空的 id 字段 我已经尝试过这些查询 但它们不起作用 id id NULL id null id id id TO 有没有办法查询空字段 Tha
  • ElasticSearch 全文搜索

    我尝试在elasticsearch java api 中使用正则表达式运行全文搜索 我的过滤器是这样的 FilterBuilder qFilter FilterBuilders regexpFilter all text 但它只匹配一个单词
  • Elasticsearch 6.2 / Kibana查询:一字段必须存在,一字段不能存在

    我的愿望是搜索 field 存在且 fields b 不存在的文档 有没有办法使用 Kibana 中的 Lucene 查询语法 Kibana 的 发现 部分中的 搜索 字段 来执行此操作 我尝试过使用 缺失 字段 b没有成功 exists
  • 包 org.apache.commons.io 不存在错误

    我正在使用 ant 编译器编译 java 文件 我收到以下错误 包 org apache commons io 不存在错误 我下载了 apache Commons IO 二进制文件并将 jar 文件粘贴到 C Program Files J
  • 在 lucene 中搜索 UUID 不起作用

    我有一个 UUID 字段 以以下格式添加到我的文档中 372d325c e01b 432f 98bd bc4c949f15b8 但是 当我尝试通过 UUID 查询文档时 无论我如何尝试转义表达式 它都不会返回它们 例如 uuid 372d3
  • Lucene 上打开的文件太多错误

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

    我正在使用嵌入 SOLR 的应用程序 SOLR 在 Tomcat 的 webapp 区域中像一场战争一样运行 是否有 SOLR 配置允许我切换搜索的默认 SOLR 行为以假定 AND 而不是 OR 作为连接运算符 在您的模式文件中添加 或修
  • 本地/离线网站“站点”的全文搜索[重复]

    这个问题在这里已经有答案了 可能的重复 通过 javascript 对 CD Rom 上的静态 HTML 文件进行全文搜索 https stackoverflow com questions 1357173 full text search
  • cursorMark是无状态的以及它如何解决深度分页

    作为指定here https cwiki apache org confluence display solr Pagination of Results光标标记是无状态的 但我不明白它是如何解决无状态的深度分页问题的 solr 是否按唯一
  • MultiFieldQueryParser 正在从首字母缩略词中删除点

    我再次发布这个问题 因为我的查询没有得到答复 我正在使用 Lucene 开发图书搜索 api 用户可以搜索标题或描述字段包含 C F A 的书籍 我正在使用 StandardAnalyzer 以及停用词列表 我使用 MultiFieldQu
  • 在 Solr 中实现术语关联挖掘的最简单方法是什么?

    关联挖矿似乎为检索提供了良好的结果相关术语在文本语料库中 有很多关于这个主题的著作 其中包括著名的LSA http en wikipedia org wiki Latent semantic analysis方法 挖掘关联最直接的方法是构建

随机推荐

  • HttpClient 将 byte[] 发送到 WCF 服务会产生错误:最大数组长度配额 (16384) 或最大项目数

    我有一个 WCF 服务可以接受byte 我正在使用创建一个客户端HttpClient并收到以下错误 我在网上读到你必须设置readerQuotas在服务器和客户端上 但是如何在服务器上设置这些设置HttpClient Error 反序列化
  • Perl 中@_ 的含义是什么?

    是什么意思 在 Perl 中 佩尔多克 佩尔瓦尔 http perldoc perl org perlvar html ARG是检查任何特殊命名的 Perl 变量信息的第一个地方 Quoting 子程序内的数组 包含传递给该子例程的参数 更
  • 如何添加排名栏?

    我想选择记录并确定每个相似数据的排名号 我的数据如下 MEMBER ID LOAN AMOUNT 1 2 000 00 2 1 000 00 3 4 000 00 4 1 000 00 我想要的结果如下所示 RANK MEMBER ID L
  • 使用 netlink API 设置无线通道

    我正在Ubuntu Linux 12 04环境中开发WiFi工具 我需要在不同通道之间切换WiFi接口 目前 我在 Wireshark 源代码 ws80211 utils c 中名为 ws80211 set freq 的函数中找到了解决方案
  • FPDF 错误:此文档(mine.pdf)可能使用了 FPDI 附带的免费解析器不支持的压缩技术[重复]

    这个问题在这里已经有答案了 如何解决问题 制作模板时 使用 PDF A 1a 导出设置将其导出 在 Acrobat Pro 中 您可以使用此设置另存为 更多详细信息 MAC OS X 但也应该适用于 WIN 在 acrobat pro 中打
  • Touchenter 和 touchleave 事件支持

    我读到了有关 touchenter 和 touchleave 事件的信息 位于莫兹拉网站 https developer mozilla org en US docs Web API TouchEvent and w3网站 http www
  • 如何在 PHP 中设置深度数组

    假设我有以下功能 function setArray array key value array key value 上面的函数中 key只在第一层 如果我想在第二层或第三层设置key 如何重写函数 e g array foo bar te
  • 如何查看初始化权重(即训练前)?

    我正在使用 Keras 生成一个简单的单层前馈网络 当通过以下方式初始化权重时 我想更好地处理权重的值kernel initializer争论 有没有办法可以在初始化后 即训练完成之前 查看权重值 只需使用get weights 在模型上
  • 包含字符串文字的文档测试

    我有一个单元测试 我想为一个将 XML 作为字符串的函数编写 这是一个文档测试 我希望 XML 与测试一致 由于 XML 是多行的 我在文档测试中尝试了字符串文字 但没有成功 这是简化的测试代码 def test gt gt gt conf
  • Excel VBA 合并/组合具有相同名称的列

    我的项目工作存在类似于下面描述的问题 My dataset is like this What I want is like this LAST COLUMN 我拥有的是许多同名的列 例如 Is paid Job 我想要的是创建一个新列 T
  • 数据库不存在错误

    当我进行数据库备份时 出现数据库不存在的错误 但我可以正常附加数据库 并且其他进程 例如数据插入和更新 工作正常 但是当我进行数据库备份时 出现以下错误 我显示了错误屏幕截图和备份按钮代码 string cnstr Data Source
  • PHP 服务器发送事件连接不会关闭?

    我已经实施了一个服务器发送事件 https developer mozilla org en US docs Web API Server sent events with 事件源 https developer mozilla org e
  • 从函数返回包含单个项目的元组

    刚刚在 Python 中遇到了一点奇怪的地方 我想我应该记录它在这里将其写为一个问题 以防其他人试图使用与我相同的徒劳搜索词来找到答案 看起来元组解包可以做到这一点 因此如果您希望迭代返回值 则无法返回长度为 1 的元组 虽然看起来外表是骗
  • 添加 spring-data-jpa 架构引用后 Spring 配置 xml 无效

    启动 spring 上下文时出现以下异常 java lang Exception java lang IllegalStateException ContainerBase addChild start org apache catalin
  • 错误:(参数类型“String?”无法分配给参数类型“String”,因为“String?”可以为空,而“String”则不能。)在Flutter中

    我是 flutter 的新手 在传递字符串时遇到错误 并到处查找 最后将其添加到 StackOverflow 中 错误是 Error The argument type String can t be assigned to the par
  • Node js函数返回[object Object]而不是字符串值

    我对 java 脚本和 Node js 很陌生 我试图从 MySQL DB 获取一个值 返回值是 object Object 而不是字符串 我在网上没有找到任何答案 这是什么问题 我希望这里有人能提供帮助 行值为 object Object
  • MKAnnotationView 的子类

    我想知道是否有人知道 MKAnnotationView 类的任何子类 在苹果文档中 他们说一个例子是 MKPinAnnotationView 所以我想知道是否还有其他预先创建的子类 例如用于跟踪设备当前位置的子类 如果有人有关于创建我自己的
  • 如何反序列化 C# 对象中的嵌套 xml

    我正在使用 silverlight 来实现 xml 的反序列化 如下所示 字符串 xmlString
  • 在 Activity 开始之前访问 Activity

    我正在使用 Instrumentation TestCase 类来对活动中的某些内容进行单元测试 在启动此活动之前 我需要能够检查 SharedPreferences 的内容并编辑它们 我无法使用 setUp 方法创建 Activity 并
  • 如何在 Lucene 中存储多种不同类型的文档

    我有一个现有的 Lucene 存储 其中包含数百万个文档 每个文档都代表一个实体的元数据 我有几个 Id 字段 Id1 Id2 Id5 每个文档可以有零个或多个该字段的值 一次只能由这些 Id 之一查询该索引 我已经独立地对这些字段建立了索