如何获取 Lucene 索引中文档子集的顶级术语?

2024-01-09

我知道可以获取 Lucene 索引中的顶级术语,但是有没有办法根据 Lucene 索引的子集获取顶级术语?

IE。特定日期范围内的文档索引中最重要的术语是什么?


理想情况下,应该有一个实用程序可以执行此操作,但我不知道有这样的实用程序。然而,以相当有效的方式“手动”完成此操作并不太难。我假设你已经有一个Query and/or Filter可用于定义感兴趣的子集的对象。

首先,在内存中构建索引子集中所有文档 ID 的列表。您可以使用IndexSearcher.search(Query, Filter, HitCollector)非常快地做到这一点;这HitCollector 文档 http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/HitCollector.html包括一个看起来应该可以工作的示例,或者您可以使用其他容器来存储您的文档 ID。

接下来,初始化一个空的 HashMap(或其他)以将术语映射到总频率,并通过调用其中之一来填充映射IndexReader.getTermFreqVector每个文档和感兴趣的领域的方法。三参数形式看起来更简单,但任何一个都应该没问题。对于三参数形式,你会做一个TermVectorMapper whose map方法检查是否term位于地图中,将其与frequency如果没有,或者添加frequency如果是的话,则为现有值。请务必使用相同的TermVectorMapper对象跨所有调用getTermFreqVector在这一过程中,而不是为循环中的每个文档实例化一个新文档。您还可以通过覆盖来加快速度isIgnoringPositions() and isIgnoringOffsets();你的对象应该返回true对于这两点。看起来像你的TermVectorMapper也可能被迫定义一个setExpectations方法,但该方法不需要执行任何操作。

构建好地图后,只需按频率降序对地图项进行排序,然后读出您喜欢的最重要术语即可。如果您事先知道需要多少个术语,您可能更喜欢使用某种基于堆的奇特算法来查找顶部k线性时间内的项目而不是使用 O(n log n) 种类。我想普通的旧类型在实践中会很快。但这取决于你。

如果您愿意,您可以通过让您的HitCollector invoke getTermFreqVector直接地。这当然应该产生同样正确的结果,并且直观地看起来它会更简单更好,但文档似乎警告说,这样做可能比两遍方法慢很多(与 HitCollector 示例在同一页面上)多于)。或者我可能误解了他们的警告。如果您雄心勃勃,可以尝试两种方法,进行比较,然后告诉我们。

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

如何获取 Lucene 索引中文档子集的顶级术语? 的相关文章

  • Lucene中SpanQuery的用途是什么?

    有人可以解释一下什么是SpanQuery是 它的典型用例是什么 The 文档 https lucene apache org core 7 7 3 core org apache lucene search spans SpanQuery
  • Solr:如何动态提升有限数量的文档? QueryElevationComponent 是否需要修改?

    我的要求是提升数量有限针对用户请求的 例如五个 文档 我有的是一个文档字段它存储类似于表示增强值的数值电梯排名值 因此 用户查询将返回 5 个具有最高电梯排名值的文档 其余文档按常规顺序填充页面 怎么做 The QueryElevation
  • 避免在重建期间删除当前的 Lucene.NET 索引

    我是 Lucene NET 的新手 但我正在使用一个开源工具 http trac sitecore net AdvancedDatabaseCrawler 为Sitecore CMS http www sitecore net它使用 Luc
  • 如何在 Orchard CMS 上使用 lucene 查询语法

    我想使用完整的Lucene 查询语法 http lucene apache org core 2 9 4 queryparsersyntax html在基于 Orchard CMS 的网站上 目前 启用后索引和搜索 http docs or
  • elasticsearch - 具有多个条件的术语过滤器

    我想实现一次对ES的搜索具有2个或更多条件的多个值 For Eg customer index has 2 fields userid and order 我使用下面的查询来搜索与这两个字段匹配的结果 query filtered quer
  • 将 json 请求 POST 到 Solr,请求中带有cursorMark

    是否可以包括cursorMarkPOST 请求正文中的值而不是将其作为查询字符串参数发送 以下查询 query val abc limit 10 cursorMark sort id asc 返回一条错误消息 JSON 请求中未知的顶级键
  • 仅根据lucene中term出现次数较多的文档来计算分数

    我开始研究基于 lucene net 引擎的简历检索 文档 组件 它工作得很好 它会获取文档并根据 VSM 背后的理念是 查询词出现在 a 中的次数 文档相对于数量 该术语出现在所有 集合中的文档越多 该文件的相关内容是 询问 Lucene
  • 使用 Lucene 进行精确短语搜索?

    我正在使用 SpanTerm Query 在 lucene 中搜索确切的短语 但这似乎不起作用 这是我的代码 Indexing IndexWriter writer new IndexWriter dir new StandardAnaly
  • 如何判断lucene索引版本?

    我正在编写一个 shell 脚本 csh 它必须确定 lucene 索引版本 然后根据该版本将索引升级到下一个版本 所以 如果 lucene 索引是 2 x 我必须将索引升级到 3 x 最后索引需要升级到6 x 由于升级索引是一个顺序过程
  • Lucene外来字符问题

    我在使用 Zend Lucene 和 等外来字符时遇到了一些严重的问题 这些问题在创建索引和查询索引时都会出现 我已经尝试过 iso 8859 1 和 utf 8 ISO 8859 1 不起作用的查询看起来像 area sk ne 使用 Z
  • 如何在 Lucene 5 中获取 Span Term 查询的匹配范围?

    在 Lucene 中 要获取术语周围的单词 建议使用跨度查询 有很好的演练http lucidworks com blog accessing words around a positional match in lucene http l
  • 我们可以同时使用拼音标记和同义词吗?

    我正在尝试同时启用语音分析器和同义词 这似乎不起作用 它们一起使用有错吗 在下面的实现中 我希望使用同义词转换搜索查询 然后使用语音分析器来检索结果 但我的同义词在这里完全被忽略了 如果我在创建索引时删除语音分析器 那么同义词就可以正常工作
  • cursorMark是无状态的以及它如何解决深度分页

    作为指定here https cwiki apache org confluence display solr Pagination of Results光标标记是无状态的 但我不明白它是如何解决无状态的深度分页问题的 solr 是否按唯一
  • Elasticsearch:带有停用词消除功能的带状疱疹

    我正在尝试实现一个 Elasticsearch 映射来优化大量文本中的短语搜索 根据中的建议本文 http www elasticsearch org blog searching with shingles 我使用 shingle 过滤器
  • Lucene 4.4.0新增ControlledRealTimeReopenThread示例使用

    在新的 Lucene 4 4 0 版本中 近实时管理器 org apache lucene search NRTManage 已被替换为受控实时重开线程 https issues apache org jira browse LUCENE
  • Lucene.Net 下划线导致令牌分裂

    我已将 MsSqlServer 数据库表 视图和存储过程编写到目录结构中 然后使用 Lucene net 对其进行索引 我的大多数表 视图和过程名称都包含下划线 我使用标准分析器 如果我查询名为 tIr 的表例如 发票 tnWtn01 我收
  • Data-config.xml 和 mysql - 我只能加载“id”列

    我在 Windows Server 2012 上安装了 Solr 5 0 0 我想将表中的所有数据加载到 solr 引擎中 我的 data config xml 如下所示
  • 特定查询出现错误

    Lucene 的新手 我在 java 客户端中将它与 Hibernate 一起使用 并且在特定查询上收到此错误 HSEARCH000146 The query string a applied on field name has no me
  • solr 不标记受保护的单词

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

    我使用了 Neo4j 3 0 6 neo4j ogm 2 0 5 Spring boot starter 1 4 1 RELEASE Lucene 5 5 2 这是我的 Machine 和 machineSectionSummary 类 我

随机推荐

  • ImageMagickError 无法读取字体“(null)”:“(null)”

    我在生产服务器 运行 ImageMagick Rmagick 等的 Ubuntu 上遇到此错误已经有一段时间了 从谷歌搜索看来 似乎找不到合适的字体来使用 这需要在 sudo nano usr lib ImageMagick 6 3 7 c
  • Connect 会话中间件签名 cookie 如何工作?

    我想了解 connect sid cookie 在 Connect Node js 框架中如何工作 我注意到它们的格式如下 s hash signature 我不明白当哈希足以用于从内存存储或 Redis 存储访问会话数据时如何使用签名 另
  • Azure 密钥保管库:访问被拒绝

    我有以下代码用于从 Azure 密钥保管库获取机密 public static async Task
  • 与数据库无关的应用程序的数据库设计

    我必须考虑什么在数据库设计中对于一个新的应用程序来说 哪些应该能够支持最常见的关系数据库系统 SQL Server MySQL Oracle PostgreSQL 值得付出努力吗 有哪些陷阱 简而言之 答案是坚持标准或接近标准实现的功能 更
  • 缓存过期控制与上次修改

    在阿帕奇的mod expires模块 有Expires具有两个基准时间段的指令 access and 修改 ExpiresByType text html access plus 30 days 可以理解 这意味着缓存将在 30 天后请求新
  • 如何在 PHP 中将指数转换为小数

    我有一个像这样的字符串 9 018E 14 现在我想将其转换为正常的十进制数 我的极客伙伴 http www mygeekpal com how to convert exponentials to decimals in php 有一篇关
  • MySQL 连接器、流式结果集和批量获取

    我正在浏览 MySQL Connector 5 1 24 源代码 我注意到该方法中有一些不寻常的地方StatementImpl createStreamingResultSet javadoc 说 我们仅在结果集是只进 只读和 获取大小已设
  • 如何在 iPhone 上使用 Quartz/Core Graphics 显示国际口音

    我已经本地化了一个适用于 iPhone 的应用程序 毫不奇怪 本地化包括一些口音 触摸卡片进行选择 然后触摸 出价 Touchez les cartes pour les 选择者 puis touchez 守财奴 这些在高级的东西中工作得很
  • 将 UTC 纪元转换为本地日期

    我已经为此奋斗了一段时间了 我正在尝试将纪元转换为日期对象 该纪元以 UTC 格式发送给我 每当你经过new Date 一个纪元 它假设它是本地纪元 我尝试创建一个 UTC 对象 然后使用setTime 将其调整到正确的纪元 但似乎唯一有用
  • 在 R 中创建表达式树

    中的替代函数R以可以解析的树的形式创建一个语言对象 如何使用 list 从头开始 创建树 然后将其交给 eval substitute gives a tree representation of the expression a 1 b
  • 如何在 ASP.NET 3.5 中对每个 http 请求进行缓存

    我们使用 ASP NET 3 5 基于控件的方法 并且只需要特定于一个 http 请求的存储 使用会话 id 中的键的线程特定缓存将不起作用 因为线程应该被池化 因此我有机会在缓存中获得来自某些先前请求的数据 这在我的情况下是不可取的 我总
  • 在python中组合两个循环

    假设有两个多边形 p1 和 p2 其中 p2 完全在 p1 内部 p1 0 10 10 10 10 0 0 0 p2 2 6 6 6 6 2 2 2 degree of contact 0 xyarrays p1 p2 p1 degree
  • asp.net 中的 GridView 标题文本

    我想使用 Design 更改 gridview 的标题文本
  • Terminal.app 可以遵循 ANSI 转义码吗?

    我注意到 随着TERM环境变量设置为xterm or xterm 256colorMac OS X 的 Terminal app 实用程序尊重大多数 ANSI 转义码 至少当这些转义码涉及更改文本颜色时 例如 echo e 033 0 31
  • 我可以使用 C# 在 Sharepoint 2010 中为计算字段创建自己的公式吗

    我想使用 Visual Studio 2010 以 C 语言为 Sharepoint 2010 创建一个以编程方式计算的字段 有没有办法设置一个公式来调用我自己的函数并将结果返回到字段 我的场景 假设我想创建一个始终返回其他两个字段之间的总
  • 发件人证书在签名验证之前已过期

    我正在开发一个关于 Java 中的证书和数字签名的项目 但我无法理解以下情况 文件发送者和接收者的证书在创建签名时有效 但当接收者收到文件时 发送者的证书已过期 这种情况是否有效 接收者可以正常验证签名 还是不能 还有一个问题 不可否认密钥
  • GLMakie 图 x 轴的量化失真。为什么?

    我使用创建一个简单的图GLMakie GLMakie scatter range 3e 9 1e 3 3e 9 1e 3 100 range 1 100 100 结果如下 看起来 x 轴被严重量化了 这Plots包可以很好地处理相同的命令
  • libpng 在 png_read_info() 上崩溃

    我正在尝试在 vs2013 中使用 libpng 1 2 10 读取 png 文件 我下载了最新的zlib并编译了pnglib 运行良好 现在我正在尝试加载一个文件 int w width int h height const char n
  • 在 Android 的异步任务线程中调用 invalidate 时出现问题!

    我试图从 asynctask 线程调用 invalidate 我收到此错误 10 18 15 14 30 469 错误 AndroidRuntime 889 导致 android view ViewRoot CalledFromWrongT
  • 如何获取 Lucene 索引中文档子集的顶级术语?

    我知道可以获取 Lucene 索引中的顶级术语 但是有没有办法根据 Lucene 索引的子集获取顶级术语 IE 特定日期范围内的文档索引中最重要的术语是什么 理想情况下 应该有一个实用程序可以执行此操作 但我不知道有这样的实用程序 然而 以