我可以运行它(它是一个从在线高级搜索中生成的查询字符串,用户可以在其中添加地址、城市、zip等等):
SELECT *
FROM MYTABLE
WHERE
FREETEXT(pCity, 'Daytona Beach')
AND CONTAINS(pAddr, '"*9*" OR FORMSOF(thesaurus, "9")' )
AND CONTAINS(pZip, '"*32118*" OR FORMSOF(thesaurus, "32118")')
AND CONTAINS(pAddr, '"*S*" OR FORMSOF(thesaurus, "S")')
AND CONTAINS(pAddr, '"*Wild*" OR FORMSOF(thesaurus, "Wild")')
AND CONTAINS(pAddr, '"*Olive*" OR FORMSOF(thesaurus, "Olive")')
AND CONTAINS(pAddr, '"*Ave*" OR FORMSOF(thesaurus, "Ave")')得到我想要的结果,只有一个记录:“9S野生橄榄大道Daytona海滩Fl 32118”
我将数据库复制到SQLServer2019,复制词库并运行EXEC sys.sp_fulltext_load_thesaurus_file 1033;等,加倍检查以确保所有的索引都在那里等,当我运行相同的查询时,没有任何返回,没有错误,只是找不到它。
如果我跑:
SELECT *
FROM MYTABLE
WHERE
CONTAINS(pAddr, '"9 S Wild Olive Ave"' ) 它返回111条带有这个地址的记录。所以数据记录在表格里..。
问题:旧服务器是server 2014,新服务器是Server 2019,有什么改变了吗?
预先感谢,只是想知道是否有人遇到了类似这样的情况或某些设置,我没有带来SQL Server 2014的喜欢和Server 2019没有。
发布于 2022-03-23 03:02:55
因此,由于另一个用户的问题,full-text catalog index CONTAINS() doesn't work with numbers已经解决了这个问题。
基本上,在新服务器上,必须单击全文的属性,然后将stoplist切换为Off。现在,同一个查询从旧服务器上运行.
https://stackoverflow.com/questions/71580629
复制相似问题