C# 如何获取我的全文目录中使用的停止词列表?

C# 如何获取我的全文目录中使用的停止词列表?,c#,.net,sql-server,full-text-search,stop-words,C#,.net,Sql Server,Full Text Search,Stop Words,有没有办法获取我的SQL Server 2008全文目录正在使用的停止字列表? 在我的C代码中使用它 我想在ASP.NET页面中使用它来搜索术语并突出显示它们 搜索页面和突出显示已经运行良好,但我想改进突出显示。我不想突出显示我的停用词列表中的单词。在sql server management studio中,如果您从全文索引中询问属性,您可以看到它使用的停用词列表。看 然后,您可以使用系统视图和获取停止字列表。从sys.fulltext\u停止字中选择*| 从sys.fulltext\u sy

有没有办法获取我的SQL Server 2008全文目录正在使用的停止字列表? 在我的C代码中使用它

我想在ASP.NET页面中使用它来搜索术语并突出显示它们


搜索页面和突出显示已经运行良好,但我想改进突出显示。我不想突出显示我的停用词列表中的单词。

在sql server management studio中,如果您从全文索引中询问属性,您可以看到它使用的停用词列表。看


然后,您可以使用系统视图和获取停止字列表。

从sys.fulltext\u停止字中选择*| 从sys.fulltext\u system\u stopwords中选择*

通过在where子句中包含语言代码,可以筛选返回的停止列表

e、 g.从sys.fulltext\u system\u stopwords中选择*language\u id=1033

id 1033对应于系统语言“英语”


或者,可以在标准SQL数据库的“存储”组中的“全文停止列表”类别下找到这些列表。在SQL的更高版本中,使用中的活动停止列表似乎已从GUI中删除,因此Sem的正确答案现在已过时。在SQLServerManagementStudio中,我找不到特定全文目录使用的停止列表

经过大量挖掘,以下查询将很容易提供每个全文目录使用的停止列表:

select so.name as tableName, sfc.name as fullTextCatalogName, sfi.is_enabled, sfi.stoplist_id, sfs.name as stoplistName
from sys.fulltext_indexes as sfi
         left join sys.objects as so on so.object_id = sfi.object_id
         left join sys.fulltext_catalogs as sfc on sfc.fulltext_catalog_id = sfi.fulltext_catalog_id
         left join sys.fulltext_stoplists as sfs on sfi.stoplist_id = sfs.stoplist_id
因此,如果stoplist_id为0,则表示此目录正在使用默认的系统stoplist。如果stoplist_id为空,则表示没有使用任何stoplist,即{{TABLENAME}上的ALTER FULLTEXT INDEX SET stoplist=OFF

如另一个答案所示-如果您想在此处额外列出给定语言(假设为英语)的默认系统停止词列表中的停止词,您可以:

SELECT * FROM sys.fulltext_system_stopwords WHERE language_id=1033
。。。请参阅具有用户定义的停止列表ID的列表:

SELECT * from sys.fulltext_stoplists
。。。如果您想查看用户定义的停止列表中的停止字:

SELECT * from sys.fulltext_stopwords where language_id = 1033 and stoplist_id = {{a_valid_stoplist_id}}

我希望这会有所帮助,因为我不得不在我的应用程序中解决一些问题-并且开始费劲地寻找索引的活动停止列表的位置-因为我习惯于右键单击->属性,就像在旧版本的MSSQL中一样…

谢谢,现在我可以创建另一个返回停止字的过程,然后在我的C代码中使用它。对我来说,stopword隐藏在sys.fulltext\u system\u stopwords中。sys.fulltext\u system\u stopwords中也有默认值。看见