【问题标题】:How to look for a SQl Server row based on a paragraph - specifically, the words in the paragraph, not the exact paragraph如何根据段落查找 SQl Server 行 - 特别是段落中的单词,而不是确切的段落
【发布时间】:2009-06-01 13:13:58
【问题描述】:

我想使用 SQL Server 2005 Express 查找与一段文本相关的前五个元组。我知道我可以使用全文索引和 CONTAINSTABLE 来查找包含确切短语的行,但是如何让它返回与段落中的单词最接近的匹配,而不是确切的段落本身。

到目前为止,我能想到的唯一方法是拆分 CONTAINSTABLE 查询,为每个空格字符插入 ' 或 ',按照以下内容生成查询,但我担心性能(和停用词)。

SELECT  id, FT.rank, description
FROM    SearchTable
    INNER JOIN CONTAINSTABLE (SearchTable, *, 
            '"This" OR "is" OR "my" OR "paragraph"') AS FT 
            ON SearchTable.id = FT.[key]
ORDER BY Rank DESC

我希望这个问题有一个标准的解决方案 - 有人知道它是什么吗?

【问题讨论】:

  • 嗯,我不知道有什么更好的方法,但是你正在考虑这样做的一个问题是你包含了所有真正常见的词,比如 is,和,我的,等等。
  • 是的,这就是我所说的“停用词”

标签: sql-server sql-server-2005 full-text-search


【解决方案1】:

您是否尝试过 FREETEXT 和 FREETEXTTABLE,它们应该可以满足您的需求?

http://msdn.microsoft.com/en-us/library/cc879300.aspx

【讨论】:

  • 是的,这正是您想要的。 FREETEXT/FREETEXTTABLE 自动将搜索文本拆分为单词,排名基于其匹配程度——确切的短语排名最高,然后是所有单词,等等。
  • 啊——这就是 FREETEXTTABLE 和 CONTAINSTABLE 之间的区别! Head-Slap 时刻 :0) 非常感谢。
猜你喜欢
  • 2022-10-15
  • 1970-01-01
  • 2020-08-30
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
  • 2013-12-19
  • 1970-01-01
相关资源
最近更新 更多