【问题标题】:Does Sphinx provide the capability to extract indexed information rather than hitting the database?Sphinx 是否提供提取索引信息而不是访问数据库的功能?
【发布时间】:2024-04-27 21:25:02
【问题描述】:

如果搜索成功,将能够访问 sphinx 索引数据,而不是访问数据库。

Thinking Sphinx 提供了一种仅通过ThinkingSphinx.search_by_ids 搜索和检索文档 ID 的方法。它是否提供了一个 API 来仅检索索引数据而不访问数据库?

【问题讨论】:

    标签: ruby-on-rails-3 full-text-search sphinx thinking-sphinx


    【解决方案1】:

    并非所有索引字段,但您可以利用 sql_attr_string

    From the docs :

    “字符串属性可以存储附加到每个文档的任意字符串。每个值有 4 MB 的固定大小限制。

    请注意,使用 sql_attr_string 声明的属性不会被全文索引;您可以为此使用sql_field_string 指令。”

    希望这会有所帮助!


    @凤凰:

    您不能使用索引器作为数据库的替代品,因为字段的原始内容未存储在 Sphinx 索引中。

    来自文档:

    "请注意,字段的原始内容不会存储在 Sphinx 索引中。您发送给 Sphinx 的文本会得到处理,并且全文索引(一种可以快速搜索关键字的特殊数据结构)会得到处理从该文本构建。但是原始文本内容随后被简单地丢弃。Sphinx 假定您将这些内容存储在其他地方。”

    您可以refer doc for more details:

    【讨论】:

    • 如果我正确理解了 sql_attr_strings,那么它就不会被索引,它的主要目的是提供一种机制来优化搜索结果。但我有兴趣访问索引本身。由于索引数据是一个搜索对象,我的问题是为什么不使用它而不是数据库中的数据。
    • @Phoenix :因为文本没有按原样存储。
    • @Phoenix 我已经添加了详细信息。
    最近更新 更多