2

假设我正在索引一张书籍表。他们有标题,作者,描述等。

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

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

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

4

4 回答 4

3

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

可能对你有帮助:D

于 2012-08-16T10:06:26.240 回答
1

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

sql_attr_string

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

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

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

于 2013-01-18T12:01:23.810 回答
0

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

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

于 2009-05-12T20:50:36.213 回答
0

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

于 2010-11-23T21:17:03.170 回答