2009-05-22 35 views
0

我有一个Rails应用程序,我试图在其上进行一些全文搜索。 Ferret似乎是最受欢迎的选择。但是,我有一个问题。使用Ferret搜索子模型

我有一个'东西',其中包含一个id,它确定用户是否可以看到它(因此搜索它),但我想搜索这个'东西'的子模型,这与我的'东西'但不直接包含任何引用给用户的引用。

因此,我该如何实现它?有没有一个聪明的方式来实现这一点,或者我需要通过指向域标识符的链接来玷污我的模型?

+0

雪貂会偷闪亮的东西。通常他们在房子里有一个地方可以隐藏所有的东西,所以如果你使用它们来搜索,你可以在那里看。 ;) – Malfist 2009-05-22 15:42:07

回答

1

我认为假设鼬是最受欢迎的选择是非常错误的。我认识的大多数人已经放弃了Ferret并用Sphinx取而代之。而因为某些原因无法使用狮身人面像的人选择了Xapian。

这就是说,回答你的问题很可能是大致相同的,无论你选择的索引系统:

当你处理权限和索引,你不能有效索引任何有关权限系统,因为它将是用户特定的。你的所有权限内容都需要存放在你的模型/控制器中。我喜欢将所有权限放入模块中,然后将其包含在模型中,以便我可以轻松地在模型之间共享它。

对于这种事情,分页可能是一种真正的痛苦,因为您从搜索引擎请求了10个项目,然后您的权限代码拒绝了这些项目中的5个,这意味着您必须继续运行搜索直到您获得前10个要显示的项目。现在,当你想要第二页时,那么事情就会变成真正的混乱。天堂禁止他们决定直接跳到第10页,因为现在你无法做出像开始ID而不是页码的技巧。真的,如果你能提供帮助的话,这不是你想要做的。

真的没有“聪明”的方式来解决权限和全文索引之间的不匹配问题。至少,没有我所知道的。这只是一个痛苦。

我向我的老板建议,当我们开始时,唯一的理智的解决方案是平等主义的权限系统:如果我们给了你一个用户名和密码,那么你有权访问。他不是粉丝。

相关问题