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)
问题是你不能结合FORMSOF
(NEAR
这里是参考)。一种可能的方法(尽管效率不高)是尝试“方法”和“装置”的所有不同替代方案(如果您没有其他单词可搜索),如下所示:
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)
他们都和我合作得很好。希望这可以帮助。