是否可以在全文搜索中将NEAR和FORMSOF结合在一起?

时间:2013-12-19 13:18:16

标签: sql-server full-text-search

我有这个:

SELECT * FROM AwesomePeople WHERE CONTAINS(Name, 'NEAR(("Nathan", "Fillion"), MAX, TRUE)')

但我希望将它结合起来,以便使用我的词汇词库来查看NathanFillion的替代词。

我可以这样做:

SELECT * FROM AwesomePeople WHERE CONTAINS(Name, 'FORMSOF (THESAURUS, "Nathan"))

但我不知道如何搜索2个单词,或者让它在单个查询中一起执行FORMSOF和NEAR。我尝试过几种组合,但运气不好。

有什么想法吗?

2 个答案:

答案 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];