Returns the surrounding text for a phrase found in full-text search, SQL 2005

I use the contains predicate to find phrases in a text box with indexed SQL Server. Is there a way to return the part of the text field that contains the search phrase or some area around it?

For example, if I search for “all men are created equal” in Gettysburg (excerpt from below), I would like to return “on the proposal that all men are created equal”, for example. some text around it.

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. 
+3
source share
2 answers

, 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 , - .

+2

, - . Seb, :

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

, 150 . 350 . . , .

0

Source: https://habr.com/ru/post/1706118/


All Articles