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