我有以下SQL Server搜索词:
我想买一部三星手机,型号应该是Galaxy S9
表:
<表类>ID 文本 tbody><<tr>1 三星s8 2celular s9 3 samsung galaxy s9 4galasxy s10 表类>
在字级别可以这样做:
select t.*
from t cross apply
(select count(*) as cnt
from string_split(t.text, ' ') s1 cross join
string_split(@sentence, ' ') s2
on s1.value = s2.value
) ss
order by ss.cnt desc;
指出:
- 这只查找两个短语中的精确单词匹配。
- 这要求用空格分隔单词,无论是在
text
还是在"句子"中。 重复的单词可能会通过计数。如果需要,可以对其进行管理(例如通过使用
count(distinct s1.value) as cnt
)。有很多选择项的方法。例如:
SELECT 'I want to buy a ' + A.BrandName + ' cellphone and the model should be ' + A.ModelName
FROM (
SELECT SUBSTRING(TEXT, 1, LEN('sumsung')) AS BrandName
, SUBSTRING(TEXT, LEN(SUBSTRING(TEXT, 1, LEN('sumsung')))+1, LEN(TEXT)) AS ModelName
FROM TABLE_NAME
WHERE TEXT LIKE N'%samsung%' AND TEXT LIKE N' %galaxy s9%'
) AS A