Мне нужна помощь в создании функции релевантности текста с использованием списка ключевых слов, который входит в состав SQL Server 2008, и я выполняю поиск в свободном тексте, который возвращает список строк таблицы.
Для каждогострока, я хочу функцию, скажем "ParseForKeywords (result, listOfKeywords) AS Parsed Result", чтобы построить новую строку, основанную на поле результата:
listOfkeywords будет списком слов с запятой или пробелом.
Если результат больше, чем, скажем, 100 слов, сделайте следующее: Найдите первое вхождение любого из ключевых слов, вычтите 5 или 6 слов и начните с него новую строку для длины строки результата..
Если результат превышает 200 слов, выполните те же действия, что и выше, для следующих 50 слов, затем найдите следующее вхождение любого из ключевых слов, минус 5 или 6 слов, и добавьте "... ".
То, что я ищу, - это отправная точка, и несколько советов о том, где эта логика будет лучше всего размещена: на SQL Server, или позвольте .Net коду делать тего при заполнении ячейки DataTable?
Если делать это в функции TSQL: я бы начал с создания курсора или CTE для циклического перемещения по списку слов, разделенных запятыми.На каждом проходе.Чтобы найти первое вхождение любого из слов, мне нужно было бы перебрать количество ключевых слов, чтобы найти наименьшее значение CHARINDEX ().
Есть ли способ сделать WHERE IN ('word1', 'word2', 'word3') ??
Как только это будет найдено, я бы вычел x # символов из этогоЗначение charindex, пока я не считаю, 4 пробела.Мне также необходимо выяснить, встречается ли какое-либо из этих слов позже в тексте, после чего весь процесс будет повторяться.
Если посмотреть на это сейчас, для этого потребуются как минимум две функции.
Спасибо.