我想使用 SQL Server full-text search 来查找以特定顺序出现的单词的屈折形式。所以单词 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)'
最佳答案
问题是您无法将FORMSOF
与NEAR
(此处为reference)组合使用。一种可行的方法(虽然效率不高)是尝试“方法”和“设备”的所有不同替代方法(如果您没有其他要搜索的词),如下所示:
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)
他们俩都和我一起工作得很好。希望这可以帮助。
关于sql-server - 使用SQL Server全文搜索以特定顺序匹配单词的变形形式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52991860/