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

ror*_*.ap 5 sql-server full-text-search sql-server-2016

我想使用SQL Server全文搜索来查找以特定顺序出现的屈折形式的单词.所以的话method,并apparatus会匹配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)'
Run Code Online (Sandbox Code Playgroud)

Tee*_*Kea 1

问题是你不能结合FORMSOFNEAR这里是参考)。一种可能的方法(尽管效率不高)是尝试“方法”“装置”的所有不同替代方案(如果您没有其他单词可搜索),如下所示:

   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)')
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用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)
Run Code Online (Sandbox Code Playgroud)

他们都和我合作得很好。希望这可以帮助。