sql-server-2008 - 使用 SQL Server FTS Stemmer

标签 sql-server-2008 full-text-search

有什么办法可以直接访问FORMSOF()中使用的词干分析器吗? CONTAINS 的选项全文搜索查询,以便它返回输入词的词干/屈折变化,而不仅仅是搜索列中存在的那些派生词。

例如,查询

SELECT * FROM dbo.MyDB WHERE contains(CHAR_COL,'FORMSOF(INFLECTIONAL, prettier)')

如果它们存在于 CHAR_COL 列中,则返回词干“漂亮”和其他变形,例如“漂亮”。我想要的是直接调用 FORMSOF() 函数而根本不引用列。任何机会?

编辑:
满足我需求的查询最终是
SELECT * FROM 
    (SELECT ROW_NUMBER() OVER (PARTITION BY group_ID ORDER BY GROUP_ID) ord, display_term
    from sys.dm_fts_parser('FORMSOF( FREETEXT, running) and FORMSOF(FREETEXT, jumping)', 1033, null, 1)) a
WHERE ord=1

Requires membership in the sysadmin fixed server role and access rights to the specified stoplist.

最佳答案

不,你不能这样做。您无法直接访问词干分析器。

您可以通过查看 Solr 了解它的工作原理。源代码。但它可能(我想会)与 MS SQL FT 中实现的不同。

更新:事实证明,在 SQL Server 2008 R2 中,您可以做一些非常接近您想要的事情。添加了一个特殊的表值 UDF:

 sys.dm_fts_parser('query_string', lcid, stoplist_id, accent_sensitivity)

它允许您获得标记化结果(即应用分词、同义词库和停止列表应用程序后的结果)。因此,如果您将其提供给“FORMSOF(....)”,它将为您提供所需的结果(好吧,无论如何您都必须处理结果集)。这是对应的article in MSDN .

关于sql-server-2008 - 使用 SQL Server FTS Stemmer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4158929/

相关文章:

sql - 数据库表名 : Plural or Singular

sql-server-2008 - SQL SERVER 2008 JOIN 提示

c# - 用于搜索多列的 MySQL 索引

search - 在 Elastic Search 中模拟字段折叠/按字段分组

mysql - 如何为自动完成功能选择 MySQL 全文索引条目?

sql-server - 尾随空格作为 SQL Server 2008 中的主键的 Varchar

sql-server-2005 - Microsoft SQL Server 中存储过程与标量值函数的性能

sql - 使用从表中收集的值创建 SQL INSERT 脚本

ruby-on-rails - 使用 PostgreSQL 在多列中进行全文搜索

c++ - 创建和使用HTML全文搜索索引(C++)