繁体   English   中英

将SQLServer全文搜索限制为前三个最佳答案

[英]Limit SQLServer Full text search to top 3 releavent answer

我是SQL新手,很抱歉,如果这很简单

我在SQL中的数据是这样的

我的资料:

Content    sl.no
KTUU Alaskas News Source Alaskas Top News Storm Watch Weather Politics Sports Health Business Headlines 16419
Lawn Care Business Service Providers Lawn Care Business Information Lawn Mowing Companies Lawn Care Directory   17113
Hydrophilic polyurethane foams medical consumer personal care cosmetics agricultural products Rynel     17183
Care Patient Care Product Manufacturer  17752
Bartlett Tree Experts Leader Residential Commercial Tree Care Services  17890
Safe Earth Lawn & Garden Care   17920
Carolina Outdoor Care Inc   17972
Glenwood Autism Behavioral Health us difference 17997
Mental Health North Central Alabama 18092
East Alabama Mental Health  18093
Jacksonville Mental Health  18094
Mental Health Assn-Madison Cty  18095
Baptist Health Ctr  18136
Mental Health Wellness Information Community Counseling Services    18150
Dayspring Behavioral Health 18162
Daysprings Behavioral Health    18164
Families Outpatient Mental Health Counseling Services   18167
Families Outpatient Mental Health Counseling Services   18168
Health Resources Of Arkansas    18170
Mental Health Council Of Ar 18172

如果我运行以下查询

SELECT TOP 3 * FROM TABLE_NAME where FREETEXT(content,'health care')

我得到的前三行而不是前三行更接近答案

如何获得前三个最相关的查询。

并且查询可以像上一个一样快速吗

使用FREETEXTTABLE代替FREETEXT 这会给你一个结果集比赛,包括Rank ,你可以订购by.Refer 对于更深入的了解

SELECT TOP 3 RANK, [KEY]
FROM FREETEXTTABLE(TABLE_NAME,content,'health care') 
ORDER BY RANK DESC

通过KEY以从原始表中获取列。

SELECT TOP 3 TABLE_NAME.*
FROM FREETEXTTABLE(TABLE_NAME,content,'health care') as fullTextResults
join TABLE_NAME on fullTextResults.[KEY] = TABLE_NAME.Id
ORDER BY fullTextResults.RANK DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM