3

我正在使用包含谓词在 SQL Server 索引文本字段中查找短语。有没有办法返回包含搜索短语的文本字段部分,或者它周围的某个区域?

例如,如果我在葛底斯堡演说中搜索“人人生而平等”(摘录如下),我想返回“致力于人人生而平等的命题”,例如围绕它的一些文本。

Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that *all men are created equal.*

Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this. 
4

2 回答 2

2

好吧,我不熟悉 SQL Server sintax,但您可以在字段中找到该事件并为其返回一个子字符串。伪代码

SELECT
  SUBSTRING(field, MAX(0, STRPOS(field, 'all men are equal' - 20), STRLEN('all men are equal') + 40)
FROM
  yourtable
WHERE
  field CONTAINS 'all men are equal'

有了这个,你只能找到那些包含短语的记录的子字符串的位置,并返回一个长 40 个字符的字符串,所以这样的东西应该可以工作。

于 2009-04-08T15:12:32.977 回答
0

在尝试完成类似的事情时偶然发现了这一点。根据 Seb 的回应,我实施了以下措施来解决我们的问题:

SELECT '...' + SUBSTRING(@TextToParse, CHARINDEX(@TheKeyword, @TextToParse)-150, 350) + '...'

这将返回前面有 150 个字符的关键字或短语。总共将返回 350 个字符。根据需要修改这些数字。省略号也包含在开头和结尾,因为此代码不适应避免单词中间的破损。

于 2014-10-08T23:43:00.827 回答