【问题标题】:How do you return a specific field from Sphinx results?如何从 Sphinx 结果中返回特定字段?
【发布时间】:2009-05-12 17:12:22
【问题描述】:

假设我正在索引一个书籍表。它们有标题、作者、描述等。

我想在所有字段中进行搜索并返回包含我的搜索词的书籍的标题。我可以进行搜索并从 Sphinx 返回 book_id (doc_id),这样我就可以自己查找它们,但如果 Sphinx 只给我标题,这样我就不必再访问数据库了,这真是太棒了。我可以让 Sphinx 向我返回不同的属性,但是让我无法获得文本字段。

这可能吗?如果是这样,你是怎么做的?

[更新] 今天发现这个:http://www.sphinxsearch.com/faq.html#row-storage

【问题讨论】:

    标签: text indexing sphinx


    【解决方案1】:

    有一些技巧。当我回答 before 时,您可以将想要获取的这些列添加到 attr 条目中,然后您可以从 sphinx 的结果中选择值。

    希望对你有帮助 :D

    【讨论】:

      【解决方案2】:

      如果文本字段中有少量数据,则可以使用 Sphinx 字符串属性。

      sql_attr_string
      

      但是,它有一些限制,例如:

      字符串属性可以存储附加到每个字符串的任意字符串 文档。每个值有 4 MB 的固定大小限制。另外,搜索 当前将缓存所有值在 RAM 中,这是一个额外的 隐式限制。

      因此,在其中存储大量数据并不是一个好主意,因为所有属性都存储在 RAM 中。

      【讨论】:

        【解决方案3】:

        讨厌这么快就扼杀这个想法,但这是不可能的。 Sphinx 不返回有关字段值的任何信息,甚至不返回与查询匹配的字段。

        再详细说明一下……Sphinx 通常会将 all 属性值加载到内存中,这可能就是为什么可以为每个结果返回它们的原因。可能是字段以不可逆编码存储,因此无法转换回正常值?不过,这是在黑暗中刺伤。

        【讨论】:

          【解决方案4】:

          在这方面取得了一些进展。现在,如果您使用SphinxSE,您可以将您搜索的 SphinxSE 表加入到生成索引的表中,并以这种方式获取您的标题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-11-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多