0

我有这句话:

I want to say hi for everybody here.

我想根据匹配单词的数量检查表中的特定列是否包含一些相似的句子。

表格行

  1. 大家好你们好
  2. 在这里打个招呼
  3. 在这里为大家打个招呼

我需要得到第三行,因为它包含最多的匹配词。

感谢您的友好反馈。它是如此紧急。

4

2 回答 2

3

您应该在列上设置全文索引,并使用CONTAINS FREETEXTTABLE函数

于 2012-12-17T09:57:21.853 回答
0

完整的代码答案有点长,但我用于处理人名的类似问题的解决方案是除了包含完整句子的表之外还有一个 Word 表。创建一个相交表以在句子和单词之间进行多对多映射。当您添加一个句子时,您还将它拆分为单词并更新 Words 表和 intersect 表。

给定一个要搜索的句子,您可以构造一个带有 where 子句(如word in ("I", "want", "to"...etc.)的查询,将其连接到 intersect 表,并根据 intersect 表中的 Sentence table id 分组。通过分组,您可以返回每个 Sentence 行匹配的单词的计数,其中每个 Sentence 行具有一个或多个匹配的单词。按该计数排序,您将获得最匹配的句子。

这种方法不考虑顺序,拼写必须准确。您还必须考虑如何处理一个句子,就像"All for one and one for all"单词重复的地方一样。

于 2012-12-17T14:16:54.420 回答