我想使用 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)'

最佳答案

问题是您无法将FORMSOFNEAR(此处为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/

10-16 16:44