需要了解使用 RAMDirectory 的优缺点

2024-01-06

我需要提高 Lucene 搜索查询的性能。 我可以使用 RAMDirectory吗?它可以优化性能吗?这有索引大小限制吗? 如果有人可以列出使用 RAMDirectory 的优点和缺点,我将不胜感激。

Thanks.


我比较了 FSDirectory 和 RAMDirectory。

  • 索引大小为1.4G
  • Centos,5G内存

搜索 1000 个关键词,平均/最小/最大响应时间 (ms) 在这里

  • FSDirectory
    • 首次运行:351/7/2611
    • 第二次运行:47/7/837
    • 第三次运行(重新启动应用程序):53/7/2343
  • RAMDirectory
    • 首轮运行:1133 年 7 月 38 日
    • 第二轮: 34/7/189
    • 第三次运行(重新启动应用程序):38/7/959

因此,您可以看到 RAMDirectory 比 FSDirectory 更快,但在“操作系统文件缓存预热”之后,速度差距并不那么明显。 RMADirectory 有什么缺点?在我的测试中

  • 它占用的内存更多,1.4G的文件需要大约2G才能加载到内存中。而FSDirectory仅使用700m。那么就意味着full gc的时间更长了。
  • 加载需要更多时间,尤其是当索引文件很大时。打开索引时需要将数据从文件复制到内存。这意味着重新启动应用程序时,请求将被阻止更长时间。
  • 同时维护两个索引不太实际。因为我们的应用程序每隔几个小时切换一次索引。我们希望新索引正在预热,而旧索引仍在同一个 tomcat 中工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要了解使用 RAMDirectory 的优缺点 的相关文章

  • 包 org.apache.commons.io 不存在错误

    我正在使用 ant 编译器编译 java 文件 我收到以下错误 包 org apache commons io 不存在错误 我下载了 apache Commons IO 二进制文件并将 jar 文件粘贴到 C Program Files J
  • Java、Lucene:在Java中设置IndexWriter的锁定超时。

    我正在致力于将 Lucene 与我们基于 Spring MVC 的应用程序集成 目前我们已经可以使用它了 但是我们很少得到cannot obtain lock错误 之后我必须手动删除锁定文件才能正常工作 如何在 Java 中设置锁定索引的超
  • 在 lucene.net 中,我们可以在不给出字段名称的情况下搜索内容吗?它会搜索所有已索引的字段吗?

    在 lucene net 中 我们可以在不给出字段名称的情况下搜索内容 并且它将搜索所有已索引的字段 如果不提供字段名称 则无法搜索内容 但是您可以使用 MultiFieldQueryParser 在所有可用字段中进行搜索 E g Dim
  • 每个领域都有不同的分析仪

    如何为使用 Lucene 索引的文档中的每个字段启用不同的分析器 例子 RAMDirectory dir new RAMDirectory IndexWriter iw new IndexWriter dir new StandardAna
  • Lucene 上打开的文件太多错误

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

    如何在单个字段下索引和搜索多个值 例如说我有一个领域处理器这可能有i3 i5 i7 or i3 or i3 i5价值观 现在想象一下笔记本电脑的数据如下 data1 name laptop name price laptop price p
  • apache solr:group by 产生的数据总和

    我们有一个要求 需要按特定字段对记录进行分组 并获取相应数字字段的总和 前任 select userid sum click count from user action group by userid 我们尝试使用 apache solr
  • 需要在 java api 中的 Solr 搜索中搜索文本及其周围的几行

    我正在使用 solr 7 7 2 并且我使用 solrj 在 Solr 中编写了一个 Java 程序 该程序在一个巨大的文本文件中搜索单词 我使用以下代码来显示代表整个文本的搜索结果 SolrQuery params new SolrQue
  • 如何添加到 OrientDB 中的空间索引?

    我正在使用工作室的 OrientDB 2 0 我使用文档中的代码成功创建了 Lucene 空间索引 CREATE class Place extends V CREATE property Place name string CREATE
  • Lucene,索引已经/外部标记化的标记并定义自己的分析过程

    在使用Lucene的过程中 我有点失望 我不明白或不明白我应该如何继续为任何 Lucene 分析器提供已经可直接索引的东西 或者我应该如何继续创建我自己的分析器 例如 如果我有一个List
  • Lucene 4.4.0新增ControlledRealTimeReopenThread示例使用

    在新的 Lucene 4 4 0 版本中 近实时管理器 org apache lucene search NRTManage 已被替换为受控实时重开线程 https issues apache org jira browse LUCENE
  • Lucene.NET:如何使用BlockJoinQuery?

    我正在尝试使用 Lucene NET 4 8 进行关系搜索 实际上我使用最新消息来源 https github com apache lucenenet 依照指示这个帖子 http blog mikemccandless com 2012
  • Lucene.Net 下划线导致令牌分裂

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

    我正在使用 lucene net 进行索引和搜索 我的代码遇到的唯一问题是 在搜索 mvc2 时没有找到任何命中 它似乎适用于我搜索的所有其他单词 我已经尝试过不同的分析器 请参阅分析器的评论 和旧的 lucene 代码 这是我的索引和搜索
  • Solr协会

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

    我必须执行以下操作 我必须在 2 个服务器 节点上部署 Solr 在另一台服务器上部署 Zookeeper 将自定义配置上传到 Zookeeper 创建具有 2 个分片和 2 个副本的自定义集合 Solr 7 4 0 和 Zookeeper
  • 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 类 我
  • lucene.net 支持的语言

    Lucene net 支持哪些语言 例如 中文 俄语 日语 阿拉伯语 法语 德语等 如果没有 有什么办法可以索引其他语言吗 Lucene 不限于英语 也不限于任何其他语言 要正确索引文本 您需要使用适合您要索引的文本语言的分析器 Lucen
  • Elasticsearch - EdgeNgram + 突出显示 + term_vector = 不好的突出显示

    当我使用带有edgengram min 3 max 7 front term vector with positions offsets的分析器时 文档包含文本 CouchDB 当我搜索 couc 时 我的亮点是 cpu 而不是 couc

随机推荐

  • 从输入中获取整数值并动态生成输入

    我想在焦点从 移开 时动态获取输入End Date 输入并传递天数到 JQuery 并生成它 我尝试了这段代码但不起作用 从几天中获取价值并生成面板数量 就是这样
  • C#:寻求快速数据结构以将像素添加到分区 HSB 直方图

    在我的应用程序中 我使用快速非托管代码从多个图像读取 RGB 像素值 然后将它们转换为 HSB 颜色 现在我想使用以下分区构建 HSB 直方图 色调 18 个分区 从 0 360 产生 20 个间隔 饱和度 3 个分区 从 0 1 产生 0
  • NHibernate 查询建模

    通常我会将我的 criterias hql 查询放在与实体相关的存储库 dal 类中 但最近我一直在考虑添加另一个表示查询是什么的抽象 这将使我有可能将常见行为添加到基类中的所有查询 例如分页 等 现在这些就是我的组件 与 nhiberna
  • 在常规发布请求中设置标头

    我需要设置一个header in a post请求 授权 request token 我尝试过使用 wslite 和 groovyx net http HTTPBuilder 但我总是得到 401 未授权 这意味着我无法正确设置标头 我也想
  • 在 terraform 中构建输出地图

    我有一个要创建的用户列表 一个 sns 主题列表以及创建策略以向用户授予主题权限 这些都是针对用户的命名空间 Given main tf provider aws region eu west 1 profile terraform mod
  • 将调用命令的输出封装在变量中 - PowerShell

    我有一个在远程计算机 来自 DC 上安装远程桌面服务的脚本 我现在正处于检查 RDS 是否安装在连接代理 服务器 和连接主机 服务器 上的阶段 我想使用调用命令 因为远程 powershell 会话似乎太复杂了 这是我的代码 res Inv
  • 在 Windows 中使用子进程运行 python 脚本。来自 emacswiki 的 Python 代码检查器包装器产生相同的错误

    所以我正在尝试设置 emacs wiki 中建议的 python 代码检查器 但是 我无法在命令 shell 中运行这些脚本 更不用说 emacs 了 该部分可在此处找到 http www emacswiki org emacs Pytho
  • 将字符串存储到c中的数组中

    据我所知 我可以创建一个包含项目的数组 例如 char test1 3 arrtest ao 123 但是我如何将我的输入存储到上面的代码之类的数组中 因为我只能将其编码为 input 10 scanf s input or gets in
  • 在运行时更改 iOS 模拟器的当前区域设置

    在开发一组用于将数值和日期转换为字符串的日期计算和语言规则时 我正在编写断言字符串格式化方法的结果的测试 一个虚构的断言可能如下所示 NSAssert dateString isEqualToString Three days until
  • Python-撤消标准输出重定向

    所以我知道从 在Python中将标准输出重定向到 无 https stackoverflow com questions 6735917 redirecting stdout to nothing in python 您可以抑制 print
  • os.kill 没有引发 OSError,但是我没有看到给定的 pid 正在运行

    在我的 ubuntu 服务器上运行以下命令 python c import os os kill 5555 0 这样做是为了查看 pid 5555 是否正在运行 根据我的理解 如果 pid 没有运行 这应该会引发 OSError 这不会对我
  • 已存在记录检查的逻辑,但仅在更新表单值的情况下[重复]

    这个问题在这里已经有答案了 我正在开发一个名为县经理的模块 我在检查县 mysql 表中已存在的县及其国家 地区时遇到问题 Database table 让我解释 Add Page In add page i am having 2 fie
  • [String] 与 [(String)] 有什么区别?

    Swift 中 String 和 String 有什么区别 我让他们使用let arr1 String and let arr2 String 应该没有什么区别 如果你看到的话 这是 Xcode 或 Swift 中的一个小故障 String
  • 如何使用 std::copy 将一张地图复制到另一张地图?

    我想将一个 std map 的内容复制到另一个 std map 中 我可以用吗std copy为了那个原因 显然 下面的代码是行不通的 int main typedef std map
  • 跟踪对 Delphi 中的文件夹所做的更改

    我需要编写一个 Delphi 程序来监视文件夹的更改 添加 更新 重命名和删除文件 我看到了使用 TShellChangeNotifier 的建议 这是这个问题的正确解决方案吗 我应该如何使用它 This question https st
  • 从 SQL Server 检索数据并将其转换为 json 格式?

    我正在使用 PHP 5 6 0 并连接到我的本地 SQL Server 我能够检索数据 但它是数组格式 我想把它转换成json格式 我得到什么 date gt 2013 02 05 16 02 02 000000 timezone type
  • C++ 将字符串转换为十六进制,反之亦然

    在 C 中将字符串转换为十六进制或反之亦然的最佳方法是什么 Example 像这样的字符串 Hello World 转为十六进制格式 48656C6C6F20576F726C64 并从十六进制48656C6C6F20576F726C64字符
  • 尝试跟踪 Firefox 中未完成的 AJAX 请求的数量

    我正在使用 Selenium 来测试 Web 应用程序 并且不允许修改应用程序的 javascript 代码 我试图通过使用 GreaseMonkey 覆盖 XMLHttpRequest send 来跟踪未完成的 AJAX 请求的数量 新的
  • 为什么静态数据成员可能无法初始化?

    我试图在加载时向工厂注册一堆类 我的策略是利用静态初始化来确保在 main 开始之前 工厂已准备就绪 当我动态链接库时 此策略似乎有效 但当我静态链接时则无效 当我静态链接时 只有一些静态数据成员被初始化 假设我的工厂生产汽车 我有 Car
  • 需要了解使用 RAMDirectory 的优缺点

    我需要提高 Lucene 搜索查询的性能 我可以使用 RAMDirectory吗 它可以优化性能吗 这有索引大小限制吗 如果有人可以列出使用 RAMDirectory 的优点和缺点 我将不胜感激 Thanks 我比较了 FSDirector