我需要使用输入 SQL Server 2008 sproc 的关键字列表来构建文本相关性函数,并且正在执行返回表行列表的自由文本搜索。
对于每一行,我想要一个函数,比如“ParseForKeywords(result, listOfKeywords) AS Parsed Result”,根据结果字段构建一个新字符串:
listOfkeywords 将是一个逗号或空格分隔的单词列表。
如果结果大于 100 个单词,请执行以下操作:找到任何关键字的第一次出现,减去 5 或 6 个单词,然后从那里开始一个新的字符串,以获得结果字符串的长度。
如果结果大于 200 个单词,则与上述相同,对于接下来的 50 个单词,然后找到任何关键字的下一次出现,减去 5 或 6 个单词并附加“...”。
我正在寻找的是一个起点,以及有关此逻辑最佳放置位置的一些建议:在 SQL Server 上,还是在填充 DataTable 单元格时让 .Net 代码执行此操作?
如果在 TSQL 函数中执行此操作:我将首先创建一个游标或 CTE 来循环以逗号分隔的单词列表。在每一次通过。要查找任何单词的第一次出现,我必须遍历关键字的数量以找到最低的 CHARINDEX() 值。
有没有办法做 WHERE IN ('word1', 'word2', 'word3') ?
一旦找到它,我将从该 charindex 值中减去 x # 个字符,直到我数到 4 个空格。我还需要看看这些词中的任何一个是否出现在文本的后面,然后整个过程会重复。
现在来看,它至少需要两个功能。
谢谢。