我有这个:
SELECT * FROM AwesomePeople WHERE CONTAINS(Name, 'NEAR(("Nathan", "Fillion"), MAX, TRUE)')
但我希望将它结合起来,以便使用我的词汇词库来查看Nathan
和Fillion
的替代词。
我可以这样做:
SELECT * FROM AwesomePeople WHERE CONTAINS(Name, 'FORMSOF (THESAURUS, "Nathan"))
但我不知道如何搜索2个单词,或者让它在单个查询中一起执行FORMSOF和NEAR。我尝试过几种组合,但运气不好。
有什么想法吗?
答案 0 :(得分:2)
看起来你正在使用SQL Server 2012作为' NEAR((" Nathan"," Fillion")是较新形式的邻近搜索,称为自定义邻近搜索
来自technet: http://technet.microsoft.com/en-us/library/ms142568%28v=sql.110%29.aspx
您无法将自定义邻近项与通用邻近值相结合 术语(术语1 NEAR术语2),生成术语(ISABOUT ...)或加权 期限(FORMSOF ......)。
也降低了
您无法将通用邻近项与自定义邻近值相结合 术语,如NEAR((term1,term2),5),加权术语(ISABOUT ...),或者 世代词(FORMSOF ......)。
Technet似乎在第一个引号中混淆了ISABOUT和FORMSOF,但无论是ISABOUT还是FORMSOF术语都不能与NEAR术语结合使用。
答案 1 :(得分:2)
以下将很有效。它更强大。
SELECT * FROM AwesomePeople AS C INNER JOIN
CONTAINSTABLE(AwesomePeople ,name, 'ISABOUT (
FORMSOF(Thesaurus, "Nathan"),
FORMSOF(Thesaurus, "Fillion"))') AS K
ON C.ID = K.[KEY];