FullText搜索多对多关系

时间:2012-08-08 17:27:46

标签: sql-server full-text-search many-to-many

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

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

  

无法在视图“view”上创建索引,因为视图引用的函数“dbo.GetTags”会执行用户或系统数据访问。

我已将搜索限制为仅限OR,但我现在有另一个多对多关系,在join表中还有其他信息我还要搜索并需要AND。< / p>

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

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

1 个答案:

答案 0 :(得分:0)

如果您正在查找标签,是否可以使用like运算符进行搜索?或者是否有某些原因需要全文搜索?

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

  1. 将全文搜索细分为每个全文搜索1个查询。因此,如果有3个条件,则根据AND条件

  2. 创建3个单独的全文搜索查询
  3. 弄清楚如何将所有标记连接到以逗号分隔的列表中。将逗号分隔的列表存储在数据模型中,可能存储在包含实际数据的表中,而不是标记中。正如您所想,您可以使用触发器来存储值。然后针对那一列而不是标记模型运行全文搜索操作。此选项是由于视图中的函数调用而无法创建索引视图的解决方法

  4. 选项2可能比选项1执行得更好,但需要更多存储空间。