使用SQL Server全文搜索以特定顺序匹配单词的变形形式

时间:2018-10-25 14:32:58

标签: sql-server full-text-search sql-server-2016

我想使用SQL Server full-text search查找以特定顺序出现的单词的变形形式。因此,methodapparatus这两个词将与These are the methods I'm using with the apparatuses匹配,但与This apparatus is used with these methods不匹配。

有没有办法做到这一点?看起来很简单,但是我什么也没发现。

我已经尝试过CONTAINS

'NEAR((method,apparatus), MAX, TRUE) AND FORMSOF(INFLECTIONAL,method) AND FORMSOF(INFLECTIONAL,apparatus)'

'FORMSOF(INFLECTIONAL,NEAR((method,apparatus), MAX, TRUE))'

'NEAR((FORMSOF(INFLECTIONAL,method),FORMSOF(INFLECTIONAL,apparatus)), MAX, TRUE)'

1 个答案:

答案 0 :(得分:0)

问题在于您无法将FORMSOFNEAR(这里是reference)结合使用。一种可行的方法(尽管效率不高)是尝试'method''apparatus'的所有不同替代方法(如果您没有其他要搜索的词for),如下所示:

   SELECT some_id
   FROM some_table
   WHERE CONTAINS(some_text, 'NEAR((method,apparatus), MAX, TRUE) OR NEAR((method,apparatuses), MAX, TRUE) OR NEAR((methods,apparatus), MAX, TRUE) OR NEAR((methods,apparatuses), MAX, TRUE)')

另一种选择是使用CHARINDEX(也可能效率不高),如下所示:

   SELECT some_id
   FROM some_table
   WHERE CONTAINS(some_text, 'FORMSOF(INFLECTIONAL,method) AND FORMSOF(INFLECTIONAL,apparatus)')
   AND CHARINDEX('method', some_text) < CHARINDEX('apparatus', some_text)

他们俩和我在一起都很好。希望这会有所帮助。