Solr/Lucene 中按日期排序的性能问题

2024-01-09

我们建立了一个包含 3600 万个文档(每个约 1K-2K)的 Solr 索引,并且我们尝试查询最多 100 个与单个简单关键字匹配的文档。正如我们所希望的那样,这工作得非常快。 但是,如果我们现在将“&sort=createDate+desc”添加到查询中(从而要求匹配查询的前 100 个“新”文档),它会运行很长很长的时间,最终导致 OutOfMemoryException。 根据我从手册中了解到的情况,这是由于 Lucene 需要先将该字段 (createDate) 的所有不同值加载到内存中(FieldCache afaik),然后才能执行查询。由于 createDate 字段包含日期和时间,因此不同值的数量非常大。 另外值得一提的是我们经常更新索引。

也许有人可以提供一些关于如何调整 Lucene / Solr 或改变我们的方法以使查询时间变得可接受的见解和方向? 我们将非常感谢您的意见!谢谢。


问题是 Lucene 将数字存储为字符串。有一些实用程序将日期拆分为 YYYY、MM、DD 并将它们放在不同的字段中。这会带来更好的结果。

较新版本的 Lucene(2.9 及以上)支持数字字段,并且性能改进非常显着(几个数量级,IIRC。)this http://www.lucidimagination.com/blog/2009/05/13/exploring-lucene-and-solrs-trierange-capabilities/关于数字查询的文章。

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

Solr/Lucene 中按日期排序的性能问题 的相关文章

  • yii2 作曲家更新致命错误

    当我更新我的作曲家以添加yii2 solr扩展我的项目时 我遇到如下错误 The yiisoft yii2 composer plugin requires composer plugin api 1 0 0 this WILL break
  • Lucene 3 上的“令牌”列表

    我是 Lucene 的新手 我开始学习版本 3 分支 但有一件事我不明白 显然是因为我在该主题上没有经验 在 Lucene 2 9 中 如果我想要一个令牌列表 我会创建一个 Token 类的 ArrayList 例如 ArrayList 这
  • 如何使用 pysolr 对 solr 进行原子更新?

    我找不到关于如何使用 pysolr 更新 solr 的合适文档 截至 2014 年 11 月原子更新 https github com toastdriven pysolr commit c49be48d459448532b5ad0f505
  • solr索引嵌套文档

    solr支持嵌套文档吗 有没有更好的方法来实现这种文档
  • 了解elasticsearch如何在内部存储日期

    我想了解 ES 如何在其索引内部存储日期值 它会转换为 UTC 吗 我有一个日期类型的字段 t 这是映射 t type date 现在 当我向 ES 插入 添加文档时 它如何存储在索引中 t 1427700477165 从 Date now
  • Elasticsearch 中的嵌套与对象

    有人可以解释 Elasticsearch 文档中 对象 和 嵌套 字段之间的区别吗 我知道默认情况下字段被定义为对象 我还知道我可以用这样的点访问对象字段 my field name my field title 等 对象的文档 http
  • 在具有多个 Web 服务器的现有 .NET / SQL Server 堆栈上实施 Lucene

    我想考虑使用 Lucene 为我当前管理的网站提供全文搜索解决方案 该网站完全基于 SQL Server 2008 C NET 4 技术构建 我要索引的数据实际上非常简单 每个记录只有几个字段 并且只有其中一个字段实际上是可搜索的 我不清楚
  • ckan本地安装,solr JSP支持未配置500错误

    我正在尝试使用 Ubuntu 14 04 LTS 在本地计算机上安装 CKAN 我按照从找到的源安装的说明进行操作here http docs ckan org en latest maintaining installing instal
  • Solr MoreLikeThis 不适用于多个分片?

    我在 SolrCloud 中有 5 个节点集群 每个节点有 2 个分片 Solr版本 6 3 0 现在 当我运行 mlt 查询时 它仅返回每个节点的结果 并且不会将它们分布在所有分片 节点上 即 没有给出任何结果 给出结果 我什至尝试将其指
  • 如何使用 Solr 索引 pdf 内容?

    我正在尝试使用 SolrJ 索引一些 pdf 文档 如下所述http wiki apache org solr ContentStreamUpdateRequestExample http wiki apache org solr Cont
  • Solr 过滤查询 - 字符串与整数

    假设我正在尝试查询一堆具有类别的文档 并且我想将查询限制为指定的类别 据我所知 这只是使用 fq 参数 过滤器查询 我想知道将参数设置为整 数而不是字符串或数据通常的情况是否会提高性能 我只是会在右侧犯错 但我想我应该仔细检查一下 以防万一
  • Solr 您的意思是(拼写检查组件)

    我在我的应用程序中使用 solr 并集成了拼写检查组件 但我遇到了一些问题 第一的 当我输入一个用空格分隔的术语时 他们会给我每个术语的更正 Eg 水 gt 什么术语 但事实是watters 第二 当我输入一些带有错误术语的短语时 尽管其他
  • Solr:在带有空格的字符串上使用通配符

    我的问题与这里讨论的问题基本相同 带空格的 Solr 通配符查询 https stackoverflow com questions 10023133 solr wildcard query with whitespace 但这个问题没有得
  • Lucene 4.0 中的术语频率

    尝试使用 Lucene 4 0 计算词频 我的文档频率工作得很好 但不知道如何使用 API 来执行术语频率 这是我的代码 private static void addDoc IndexWriter writer String conten
  • 用于标签搜索的数据存储解决方案

    我已经按照预先计算的分数订购了数百万件商品 每个项目都有许多布尔属性 假设总共有大约一万个可能的属性 每个项目有十几个 我希望能够请求实时 几毫秒 给定任意属性组合的前 n 个项目 您会推荐什么解决方案 我正在寻找可扩展性极强的东西 我们目
  • Solr/Solrj 分页

    我正在创建的 Web 应用程序中使用 solr 和 solrj 来实现索引和搜索功能 我的请求处理程序在 solrconfig xml 中配置如下
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • Solr 中的拼写检查中阈值频率不起作用

    我得到stuck在中间Solr 我只需要最流行的词 w r t query 我用过语音过滤器双方索引和查询但这里的problem是它正在给予术语太多 我只需要几个术语这是非常具体的query 模式 xml
  • Solr 突出显示是否还可以指示返回片段在原始字段内的位置或偏移量?

    背景 使用Solr 4 0 0 我已经对一组示例文档的文本建立了索引并启用了术语向量 以便我可以使用快速向量突出显示
  • SpatialQuery 使用 Lucene 进行基于位置的搜索

    我的 lucene 索引已索引纬度和经度字段 如下所示 doc Add new Field latitude latitude ToString Field Store YES Field Index UN TOKENIZED doc Ad

随机推荐