2012-08-08 94 views
0

我实现了一个多对多的标签系统,现在我想进行全文搜索。问题是AND不起作用。如果我使用搜索字词tag1 AND tag2 AND tag3搜索某个项目,即使我的记录由所有三个标签标记,我也不会收到任何记录。全文搜索多对多关系

为了解决这个问题,我尝试了一个标量函数来连接我的标签并将其包装在视图中。然而,这种失败,出现以下错误:

Cannot create index on view "view" because function "dbo.GetTags" referenced by the view performs user or system data access.

我限制我的搜索,只手术室,但我现在已经在join表的更多信息,我也希望在其他许多一对多的关系搜索并且需要AND。

我能想到的唯一选择是unioning一堆inner joins或使用触发器。

有没有人有解决这个问题的经验或建议?

回答

0

如果您正在查找标签,您是否可以使用类似的操作符进行搜索?或者有什么理由需要全文搜索?

否则使用全文搜索以时尚搜索标签,假设您存储每行一个标签在标签数据模型,两个想法:

  1. 打破你的全文检索到1个查询每个全文搜索。因此,如果有3个条件,请在AND条件下创建3个单独的全文搜索查询

  2. 找出如何将所有标记连接成以逗号分隔的列表。将逗号分隔的列表存储在数据模型中,可能位于包含实际数据的表格中,而不是标签。正如你想的那样,你可以使用触发器来存储这些值。然后针对该列执行全文搜索操作,而不是您的标记模型。此选项是一种变通方法不能够创建索引视图由于视图中的函数调用

选项2可以进行比选1更好,但需要更多的存储空间。

+0

触发它。 – 2012-08-09 13:24:20