2015-05-27 23 views
0

我是一个SQL新手对不起,如果这是一个简单的事情限制SQLServer的全文搜索,以顶部3 releavent回答

我的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') 

我得到的前三行而不是第一个三排它们 接近答案

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

而且可以将查询快,像以前的一个

+0

ORDER BY something? – jarlh

+0

这是什么东西,它不能满足它应该像排名或东西,但如何做到这一点 – The6thSense

回答

1

使用FREETEXTTABLE而不是FREETEXT。这会给你一个结果集比赛,包括Rank,你可以订购by.Refer this为更多的有识之士

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