gpt4 book ai didi

sql-server - SQL Server ContainsTable 未返回术语 "inn"的结果

转载 作者:行者123 更新时间:2023-12-02 23:12:35 25 4
gpt4 key购买 nike

我有一个名为 hotel 的表,其中包含以下信息:

  • Hotel_Id:2950
  • Hotel_Name:公园旅馆
  • 酒店编号: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

我认为“旅馆”一词存在一些问题,但如果我搜索:

select * 
from ContainsTable(hotel, Hotel_Name, '"Inn"')

我得到了相同的 key :2950,排名:176 结果。

“inn”是导致此问题的关键字吗?

最佳答案

这是我的理论..

您的酒店名称,Inn on the Park,索引如下:

pos   word
1 Inn
2 (noise)
3 (noise)
4 Park

onthe 是停止词/干扰词,不存储在索引中(但请注意,位置仍然存储)。

您正在按完整字符串进行搜索。考虑到干扰词,这意味着:

Query 1: "Inn on Park" -> "Inn (noise) Park"
Query 2: "In on Park" -> "(noise) (noise) Park"

您的索引字符串(酒店名称)是 Inn (noise) (noise) Park,因此这将是第二个查询的部分匹配,但第一个查询不匹配。

这可以通过搜索 Inn 1 1 Park 进行测试。这将返回一个结果。但 Inn 1 Park1 Inn 1 Park 不会(位置不对应)。

要“修复”此问题,您可以使用不同的运算符,例如 AND、OR 或 NEAR:

"Inn" AND "Park"
"Inn*"
"Inn" NEAR "Park"

这里有两个屏幕截图,显示了主要查询的结果。请注意第二个将如何仅搜索“公园”或“噪音噪音公园”(其中任何一个都会返回结果):

enter image description here

enter image description here

关于sql-server - SQL Server ContainsTable 未返回术语 "inn"的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com