我们有一个全文索引的nvarchar(max)列。在此栏中存储的文本中有全部短语/句子/段落,在进行全文搜索时应该忽略它们。例如,让我们看看那些包含“快速棕色狐狸跳过懒惰狗”的行,并且你不希望这个短语被索引,因为在这种情况下,“狐狸”应该被忽略,但如果“狐狸”出现在其他部分文本是相关的,不应该被忽略。控制nvarchar列中的文本SQL Server的全文引擎索引
是否有任何方法来过滤全文索引引擎从列中读取的文本,以便它不索引这些短语?
一个更具体的例子:电子邮件的主体存储在数据库中。有没有办法在电子邮件的文本中保留所有签名/病毒检查器信息,但在进行全文搜索时完全忽略它?
谢谢,我们考虑过停用词和第二栏。我也假设停用词只能是单个词,尽管我没有测试过这个假设。第二栏的问题是数据的重复。我会添加一个答案,概述我们正在考虑的做什么 –
@PhilHaselden是的,第二个FTS索引列意味着数据重复,但它也提供了易用性,因为您将从FTS搜索立即获得正确的记录,需要额外的JOIN。您的消音语法也可能起作用,但如果您的原始表格包含一百万条记录,即使每封电子邮件只有两个噪音短语,您也将在DocumentNoisephrase表中记录两百万条记录,必须根据每个查看请求搜索并加入该记录。您还必须正确处理插入/更新/删除到主表中并更新噪音表。 – andrews
@PhilHaselden继续以前的评论......所以从我的SQL Server FTS体验来看,性能方面的最佳方法是为FTS引擎提供最终版本的数据,即使它带有数据复制成本。而且,像lucene/solr和elasticsearch这样的外部搜索引擎也完全一样:它们从多个连接的表中获取数据,然后构建一个大的平面“表/视图”,然后它们就是FTS-index。通过这种方式,他们可以立即为搜索结果提供各种聚合sum()/ count()计数。 – andrews