我有一个包含以下列的表(MyTable):
Col1:NameID VARCHAR(50) 主键不为空
Col2:地址 VARCHAR(255)
数据示例:
名称:“1 24”
地址:“主街1234号”
在使用默认参数创建目录后,我在表上创建了全文索引。
我怎样才能实现以下查询:
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 https://stackoverflow.com/questions/8435602/sql-2008-turn-off-stop-words-for-full-text-search-query.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)