我想使用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)'
答案 0 :(得分:0)
问题在于您无法将FORMSOF
与NEAR
(这里是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)
他们俩和我在一起都很好。希望这会有所帮助。