0

我正在使用 Sphinx(带有 Thinking Sphinx v2.0 for RoR 插件),

假设我有几个关于用户模型的索引,让我们说“姓名”、“地址”及其一对多的关联,如“帖子”、“评论”等。

这意味着按帖子内容搜索将返回我发布帖子的用户,并使用狮身人面像的 :fieldmask 'rank mode',我能够确定由于匹配“帖子”而搜索了该用户。但是用户有“很多”帖子。那么如何确定它匹配的“帖子”。

有什么办法,在索引时我可以动态指定索引。?例如,如果我可以将索引 'post_1'='< post1content >' , 'post_5'='< post5content >' 指定为 user1 的不同“字段”;类似 'post_2', 'post_7' for user2,因此在搜索后它会返回我 user2 与匹配字段匹配为 post_7...

4

2 回答 2

0

恐怕,Sphinx 不能为每条记录设置不同的字段,因此您希望使用这种方法无法实现。

如果您需要知道哪些帖子与查询匹配,我建议您改为在 Post 模型上进行搜索,然后您可以参考帖子的用户?您可以在权重之前按 user_id 排序,或者按 user_id 分组(因此每个用户只返回一个帖子)?您可以将用户数据引入帖子索引定义(如果帖子有一个用户,那么该数据将保留为单个值,而不是每条记录的多个值)。

希望这能让您清楚地了解您的选择。

于 2013-05-29T13:24:13.403 回答
0

如果你知道,你想在一个查询中搜索 post_5,在另一个查询中搜索 post_7,你可以使用 json 作为 {post_1:, post_2:}。问题是您必须知道要搜索的帖子数量。

也许看看:https: //stackoverflow.com/a/24505347/1444576 - 如果它与您的示例相似。

于 2014-07-01T08:22:30.877 回答