在 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 索引进行关联 的相关文章

随机推荐

  • 将插入符号/光标位置设置为字符串值 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