我实现了多对多标签系统,现在我想进行全文搜索。问题是AND无效。如果我使用搜索字词tag1 AND tag2 AND tag3
搜索某个项目,即使我的记录被所有三个标记标记,我也不会获得任何行。
为了解决这个问题,我尝试了一个标量函数来连接我的标签并将其包装在视图中。但是,由于以下错误而失败:
无法在视图“view”上创建索引,因为视图引用的函数“dbo.GetTags”会执行用户或系统数据访问。
我已将搜索限制为仅限OR,但我现在有另一个多对多关系,在join
表中还有其他信息我还要搜索并需要AND。< / p>
我能想到的唯一选择是unioning
一堆inner joins
或使用触发器。
有没有人有解决这个问题的经验或建议?
答案 0 :(得分:0)
如果您正在查找标签,是否可以使用like运算符进行搜索?或者是否有某些原因需要全文搜索?
否则,要在AND时尚搜索标签中使用全文搜索,假设您在标签数据模型中每行存储一个标签,则有两个想法:
将全文搜索细分为每个全文搜索1个查询。因此,如果有3个条件,则根据AND条件
弄清楚如何将所有标记连接到以逗号分隔的列表中。将逗号分隔的列表存储在数据模型中,可能存储在包含实际数据的表中,而不是标记中。正如您所想,您可以使用触发器来存储值。然后针对那一列而不是标记模型运行全文搜索操作。此选项是由于视图中的函数调用而无法创建索引视图的解决方法
选项2可能比选项1执行得更好,但需要更多存储空间。