SQL 服务器 ContainsTable 未返回包含术语 "inn" 的结果
SQL Server ContainsTable not returning result with term "inn"
我有一个名为 hotel
的 table,包含以下信息:
Hotel_Id
: 2950
Hotel_Name
:公园旅馆
Hotel_Number
: 01234567
Hotel_TypeId
: 1
我需要能够搜索名称列包含特定术语的记录。
搜索是:
select *
from ContainsTable(hotel, Hotel_Name, '"Inn on Park"')
我没有得到任何结果,但如果我搜索:
select *
from ContainsTable(hotel, Hotel_Name, '"In on Park"')
我明白了
Key: 2950
Rank: 176
我认为 "inn" 一词存在一些问题,但如果我搜索:
select *
from ContainsTable(hotel, Hotel_Name, '"Inn"')
我得到相同的密钥:2950,排名:176 结果。
"inn" 是导致此问题的关键字吗?
这是我的理论..
您的酒店名称 Inn on the Park
的索引如下:
pos word
1 Inn
2 (noise)
3 (noise)
4 Park
on 和 the 是 stop/noise 词,并没有存储在索引中(但注意位置仍然是已存储)。
您正在按完整字符串搜索。考虑到干扰词,这意味着:
Query 1: "Inn on Park" -> "Inn (noise) Park"
Query 2: "In on Park" -> "(noise) (noise) Park"
您的索引字符串(酒店名称)是 Inn (noise) (noise) Park
,因此这在第二个查询中是部分匹配,但在第一个查询中不匹配。
这可以通过例如搜索 Inn 1 1 Park
来测试。这将return一个结果。但是Inn 1 Park
或1 Inn 1 Park
不会(位置不对应)。
要"fix",您可以使用不同的运算符,例如 AND、OR 或 NEAR:
"Inn" AND "Park"
"Inn*"
"Inn" NEAR "Park"
这里有两个屏幕截图,显示了您的主要查询的结果。请注意第二个将只搜索“Park”或“noise noise Park”(其中任何一个都会 return 结果) :
我有一个名为 hotel
的 table,包含以下信息:
Hotel_Id
: 2950Hotel_Name
:公园旅馆Hotel_Number
: 01234567Hotel_TypeId
: 1
我需要能够搜索名称列包含特定术语的记录。
搜索是:
select *
from ContainsTable(hotel, Hotel_Name, '"Inn on Park"')
我没有得到任何结果,但如果我搜索:
select *
from ContainsTable(hotel, Hotel_Name, '"In on Park"')
我明白了
Key: 2950
Rank: 176
我认为 "inn" 一词存在一些问题,但如果我搜索:
select *
from ContainsTable(hotel, Hotel_Name, '"Inn"')
我得到相同的密钥:2950,排名:176 结果。
"inn" 是导致此问题的关键字吗?
这是我的理论..
您的酒店名称 Inn on the Park
的索引如下:
pos word
1 Inn
2 (noise)
3 (noise)
4 Park
on 和 the 是 stop/noise 词,并没有存储在索引中(但注意位置仍然是已存储)。
您正在按完整字符串搜索。考虑到干扰词,这意味着:
Query 1: "Inn on Park" -> "Inn (noise) Park"
Query 2: "In on Park" -> "(noise) (noise) Park"
您的索引字符串(酒店名称)是 Inn (noise) (noise) Park
,因此这在第二个查询中是部分匹配,但在第一个查询中不匹配。
这可以通过例如搜索 Inn 1 1 Park
来测试。这将return一个结果。但是Inn 1 Park
或1 Inn 1 Park
不会(位置不对应)。
要"fix",您可以使用不同的运算符,例如 AND、OR 或 NEAR:
"Inn" AND "Park"
"Inn*"
"Inn" NEAR "Park"
这里有两个屏幕截图,显示了您的主要查询的结果。请注意第二个将只搜索“Park”或“noise noise Park”(其中任何一个都会 return 结果) :