在 Thinking Sphinx 中使用 Delta 索引进行关联

2023-12-15

我有一个产品型号:

class Product < ActiveRecord::Base
    belongs_to :subcategory

    define_index do

        # fields
        indexes subcategory.name, :as => :subcategory, :sortable => true, :facet => true

        # attributes
        has subcategory_id, created_at, updated_at

        #properties
        set_property :delta => true

现在,假设用户更新子类别名称,这是更新产品增量索引的正确方法吗?

根据这个文档:http://freelancing-god.github.com/ts/en/deltas.html, a save消息应该发送到产品,因此在这种情况下,我应该针对与子类别相关的每个产品并发送save消息,类似这样的:

class Subcategory < ActiveRecord::Base
    has_many :products

    after_save :set_product_delta_flag

    private

    def set_product_delta_flag
        products.each { |product|
        product.delta = true
        product.save
     }
    end
  end

我认为这有点过分了,因为我们每个子类别大约有 100,000 种产品。 这是更新增量索引的正确方法吗?我错过了什么吗?

添加后:

def set_product_delta_flag
    Product.update_all ['delta = ?', true], ['subcategory_id = ?', id]
    Product.index_delta
end

我总是收到此错误:

NoMethodError(# 的未定义方法“index_delta”):

因此,这个问题的解决方案是将消息 *define_indexes* 发送到 Product 模型。

修复此问题后,一切正常,但 delta_index 未正确更新,我需要做save两次到子类别模型。

所以我的最终解决方案是这样的:

after_commit :set_product_delta_flag

private

def set_product_delta_flag
    Product.define_indexes
    Product.update_all ['delta = ?', true], ['subcategory_id = ?', id]
    Product.index_delta
end

Using 提交后 and 定义索引是正确的解决方案吗?这是我找到的唯一一个。


请尝试以下方法:

def set_product_delta_flag
  Product.update_all ['delta = ?', true], ['subcategory_id = ?', id]
  Product.index_delta
end

单个 SQL 语句,单个增量重新索引。应该表现得更好:)

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

在 Thinking Sphinx 中使用 Delta 索引进行关联 的相关文章

  • ruby 管道、IO 和 stderr 重定向

    我希望有一个 ruby 程序 一个 rake 任务 观察另一个 rake 任务的输出 输出写入器输出到 stderr 我想读一下这些行 我很难设置它 如果我有一个作家 stdout writer rb 不断打印一些东西 usr bin en
  • Ruby 在 Windows 上找不到 sqlite3 驱动程序

    我正在尝试在 Windows 上设置 Ruby on Rails 我正在使用看起来不错的 Flash Rails 发行版 但是 sqlite3 有一个问题 我发现线程告诉我安装版本 1 2 3 安装得很好 我使用的是 ruby 1 9 0
  • HMC SHA1 哈希 - C# 生成与 Ruby 不同的哈希输出

    我正在尝试为我正在使用的第三方服务快速获取一个有缺陷的 Net 客户端库 原始库 可以运行 是用 Ruby 编写的 但 DotNet 的等效库会向 Ruby 库生成不同的哈希输出 Ruby加密代码如下 def self encrypt st
  • Rails 3 best_in_place 编辑在不刷新页面的情况下无法工作

    我从Bernat的博客rails迷你教程中获取了评论代码 我尝试使用他的 best in place gem 添加就地编辑功能 在大多数情况下它工作正常 我的代码部署在http falling spring 3964 herokuapp c
  • ruby中如何将binary32转换为float

    我有一个以 IEEE 32 编码的 binary32 如何将 0x0040EDC2 转换为 118 625 我尝试了几种打包和解包选项 但没有成功 IEEE http en wikipedia org wiki Single precisi
  • 如果使用 jQuery 添加字段,Rails 嵌套表单属性不会保存

    我有一个带有嵌套表单的 Rails 表单 我使用 Ryan Bates 嵌套表单和 jquery 教程 并且就动态添加新字段而言 它工作得很好 但是当我提交表单时 它不会保存任何关联的属性 但是 如果在表单加载时构建部分 则它会很好地创建属
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • RSpec 2 中使用 OR 相等

    下面这个例子的正确写法是什么 玩家的分数应等于 5 或 8 it should equal 5 or 8 do player score should 5 or 8 end Thanks Tim 5 or 8将始终产生结果 5 并且不会执行
  • 黄瓜与 RSpec

    我想开始深入研究 BDD 我以前从未使用过 TDD 现在 不确定我是否应该从学习 RSpec 开始 然后跳到 Cucumber 或者直接使用 Cucumber 我一直在互联网上阅读有关两者的内容 在我看来 Cucumber 可能是 RSpe
  • 用于 S3 私有文件的 ActiveStorage

    到目前为止 我一直在使用 Paperclip 将一些文件上传到 S3 其中一些文件不是公开的 Paperclip 允许通过以下位将一些文件作为私有文件上传 has attached file image styles large 2000x
  • 如何使用国家宝石

    我正在尝试使用国家宝石 https github com hexorx countries 但是在我捆绑安装这个 gem 后 有一些关于如何合并它的基本问题 我是否需要创建新的控制器 模型才能访问这些国家 地区 如何创建一个简单的选择下拉列
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • Rails3/will_paginate/Ajax - 下一个/上一个链接无法正常工作(这是一个错误吗?)

    我正在遵循 使用ajax分页 http railscasts com episodes 174 pagination with ajax railscast 用于我的 Rails 3 应用程序 一切似乎都运行良好 除了上一个和下一个链接根本
  • 更改 Active Storage 的默认 URL

    我们可以更改从活动存储创建的默认 永久 url 以重定向到 S3 类似于rails active storage representations 我不喜欢网址中的框架名称 Thanks UPDATE 最近 Rails 6 中增加了一个可配置
  • <%=h ... %> 在 Rails 中意味着什么?

    I found here http api rubyonrails org classes ActionView Helpers RecordTagHelper html以下语法 什么是h means 它用于转义标签的输出以避免跨站点脚本
  • Rails HABTM 设置、模型对象和 join_table 插入控制器设置

    我有以下设置 1 个产品有多个 Product types 许多 Product types 有 1 种类型 根据我对文档的理解 HABTM 关系 我的模型是 class Product lt ApplicationRecord has a
  • 在生产环境中使用 Rails 设置 sunspot solr

    我尝试了各种链接 但我似乎找不到关于创建与生产中的 Rails 一起运行的 solr 实例的好资源 我知道您必须为生产设置 solr 服务器 我已经尝试使用 tomcat 设置 solr 但我似乎无法将其链接到 Rails 应用程序 有什么
  • Rails 4 可安装引擎,找不到文件“jquery”

    我正在创建一个 Rails 可安装引擎插件 它使用 gem jquery rails 我在 gemspec 文件中添加了这段代码 s add dependency jquery rails gt 3 0 1 and run bundle i
  • ArgumentError:Ruby 中的参数数量错误

    试图解决这个问题 class Person def initialize name name name end def greet other name puts Hi other name my name is name end end
  • 使用 Mountain Lion、Xcode 4.5 和 RVM 安装 Ruby?

    rvm install 1 9 3 with gcc clang 根据建议无法使用 RVM 在 Lion 下安装 Ruby GCC 问题 https stackoverflow com questions 8032824 cant inst

随机推荐

  • 将插入符号/光标位置设置为字符串值 WPF 文本框的末尾

    我尝试将插入符 光标位置设置为end当我第一次打开窗口时 WPF 文本框中的字符串值 当窗口打开时 我使用 FocusManager 将焦点设置在文本框上 似乎没什么作用 有任何想法吗 请注意 我使用的是 MVVM 模式 并且我的代码中仅包
  • Struts2 中的 NoSuchMethodException

    我有出生日期的文本字段 当用户输入无效日期 例如字符串 时 错误消息成功显示为 fielderror 但在我的控制台中 我收到此错误 java lang NoSuchMethodException Profile setBirthDate
  • jquery ajax 单击时调用,仅有效一次

    我有这个简单的 jquery 代码 单击时 它会获取标签的 URL 加载当前内容旁边的页面 滑动它并删除旧内容 页面的状态与以前完全相同 相同的元素没有额外的类或样式 问题是下一个 ajax 调用不起作用 也许我需要 unbind 一些东西
  • 反应点击处理程序并绑定它

    我有一个反应组件 我在其中迭代列表并创建行 每行都有一个删除按钮 单击删除按钮时 我想传递对该行中元素的引用 var TagTable React createClass onTagDelete function tagName this
  • 将空白节点添加到 Jena 模型

    我正在尝试使用一组现有的三元组填充耶拿本体模型 其中一些包含空白节点 我想忠实地维护这个新模型中的这些空白节点 但我无法找到将它们添加到耶拿模型中的方法 我一直在使用 Statement s ResourceFactory createSt
  • 多个 UIAlertView 问题

    我的代码有问题 我有两个 UIAlertView 代码块 一个带有取消和确定按钮 另一个用于制作 ImagePicker IBAction publicaPeticion if txtPeticion hasText UIAlertView
  • 为什么我在C#中无法设置这个ACL规则?

    我的 C 应用程序在 Vista SP1 上以提升的管理员身份运行 尝试使用以下代码设置以下规则 不会产生任何错误 但目录的 ACL 也不会发生任何更改 我缺少什么 public static void Main string args s
  • Websphere:不强制执行 web.xml 中的安全约束

    我正在尝试在我支持的非常旧的 J2EE 应用程序上启用 SSL 该应用程序在 WebSpehre 6 1 中运行 我已在运行应用程序的 WAS 配置文件中启用应用程序安全性 但下面的 web xml 配置仍然允许用户使用 HTTP 或 HT
  • 如何读取用户写的内容(无需按 Enter 键) - 控制台 C#

    好吧 问题的标题可能有点不对劲 但我没有想到更好的 所以这里是 我想阅读用户输入的 到目前为止 的内容 我需要它像这样工作 用户输入一些所需的数据 然后询问他 她是否想要完整的进度输出或只是结果 当然 我可以调用 ReadLine 并查看他
  • PHP。是否可以将 array_column 与对象数组一起使用

    是否可以通过array column对象数组 我已经实现了ArrayAccess接口 但没有效果 我应该实施另一个吗 class Foo implements ArrayAccess public Id Title public funct
  • 如何为apache+wsgi网站设置LD_LIBRARY_PATH

    我正在尝试在基于 wsgi apache Flask 的网站中使用 python 库 在独立命令脚本中使用该库时 我必须将库路径添加到 LD LIBRARY PATH 所以这适用于独立脚本 export LD LIBRARY PATH us
  • 从字符串中解析多项式系数

    我正在尝试构建一个正则表达式来解析字符串中多项式的系数 我以为我已经找到了解决方案 直到我发现一个特定的示例 我怀疑该示例格式错误 破坏了我的正则表达式 我也不确定我的解决方案是最优雅的 以下是我需要解析的字符串的一些示例 polys 1x
  • 如何在 spigot 1.16.4 中获取玩家的 ping

    我尝试以多种方式使用 java 反射来获取玩家的 ping 值 但在 100 时 它返回 0ms 我已经搜索了很长时间 所以 有人可以帮助我吗 Try 1 public static int getPing Player p try Obj
  • ActualWidth 作为 From WPF 动画的值

    为什么我不能参考ActualWidth作为一个值 我可以在代码中使用它 XAML
  • Javascript 和 ESLint 中的全局变量

    我有多个 javascript 文件 并且在一个文件中定义了一些全局变量 该变量先于其他文件加载 因此 第一个文件之后加载的所有文件都可以访问全局变量 然而 ESLint 将全局变量显示为 未定义 我不想改变 ESLint 的规则 我想找到
  • noRollbackFor 并不总是处理未经检查的异常(不重复)

    我见过很多类似的问题 但它们通常与我的问题无关 这是我的代码 Override class implements interface can also add rollbackFor OutOfMemoryError class here
  • Android Studio 中的 lint 如何与 IntelliJ 检查集成?

    据我所知 Android Studio中有两种类型的检查 一种是从IntelliJ继承的 另一种是从lint继承的 参见 命令行上的 Android lint 缺少问题组 与 Android Studio 中提供的选项相比 我还了解到 当您
  • 我可以使用 Arrays.asList 创建数组列表吗?

    假设我想创建一个包含 Integer 数组的列表 但 Integer foo 1 2 3 List
  • 如何在 php 中以编程方式从选项卡获取 IMEI 号码 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 当我的网页加载到浏览器中时 我需要从 Android 设备获取 IMEI 号码 页面将用
  • 在 Thinking Sphinx 中使用 Delta 索引进行关联

    我有一个产品型号 class Product lt ActiveRecord Base belongs to subcategory define index do fields indexes subcategory name as gt