gpt4 book ai didi

sql-server-2008 - 如何对全文索引搜索 SQL 的两列执行 CONTAINS()

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

我有一个包含以下列的表 (MyTable):

Col1:NameID VARCHAR(50) 主键不为空Col2:地址 VARCHAR(255)

数据示例:

姓名:'1 24'地址:'1234 Main St.'

在使用默认参数创建目录后,我在表上做了一个全文索引。

如何实现以下查询:

 SELECT * FROM MyTable
WHERE CONTAINS(NameID, '1')
AND CONTAINS(Address, 'Main St.');

但是我的查询没有返回任何结果,这没有意义,因为它确实有效:

 SELECT * FROM MyTable
WHERE CONTAINS(Address, 'Main St.');

还有这个:

 SELECT * FROM MyTable
WHERE CONTAINS(Address, 'Main St.')
AND NameID LIKE '1%'

但这也行不通:

 SELECT * FROM MyTable
WHERE CONTAINS(NameID, '1');

当我选择要包含的列时,为什么我不能查询索引的主键列(名称)设置全文索引时的地址列?

提前致谢!

最佳答案

由于 NameID 字段是 varchar 类型,全文可以很好地处理索引。

CONTAINS(NameID, '1') 不返回任何搜索结果的原因是 '1'(和其他类似的小数字)被全文视为噪声词并在索引期间被过滤掉。

要获取停用词列表,请运行以下查询 -

select * from sys.fulltext_system_stopwords where language_id = 1033;

您需要关闭或修改停止列表,可以找到一个例子here .

关于sql-server-2008 - 如何对全文索引搜索 SQL 的两列执行 CONTAINS(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945479/

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