gpt4 book ai didi

sql-server - SQL Server 全文搜索使用 CONTAINS、FORMSOF、NEAR 进行多个搜索词

转载 作者:行者123 更新时间:2023-12-02 15:51:41 25 4
gpt4 key购买 nike

我是 SQL Server 全文搜索的新手,正在尝试找出使用屈折引擎搜索多个单词的最佳方法,以便搜索使用所有单词的各种形式。

据我所知,FREETEXT 在与多个单词一起使用时使用隐式 OR。我想要一个 AND 以便搜索结果包含所有单词,因此我选择使用 CONTAINS。

我正在尝试执行类似于下面的查询的操作,该查询使用 FORMSOF 和邻近关键字 NEAR 来表示多个单词。请注意,这不是有效的语法并返回错误:

select top 5 *
from content
WHERE CONTAINS((Title,Subtitle,Body), 'FORMSOF(INFLECTIONAL, model NEAR airplane)')

但是,下面的查询有效,但我不知道它是否给出了预期的结果。 SQL 全文搜索的“AND”和“NEAR”有区别吗?

select top 5 *
from content
WHERE CONTAINS((Title,Subtitle,Body), 'FORMSOF(INFLECTIONAL, model) AND FORMSOF(INFLECTIONAL, airplane)')

我想我要问的是,有没有办法将 CONTAINS、FORMSOF 和 NEAR 与多个搜索词一起使用?或者我应该只使用上面使用“AND”的第二个查询?

最佳答案

来自文档:

<proximity_term> ::= 
{ <simple_term> | <prefix_term> }
{ { NEAR | ~ }
{ <simple_term> | <prefix_term> }
} [ ...n ]

这意味着您可以对(可能有前缀的)单词、短语及其组合使用 NEAR 谓词。

由于您的搜索词是使用非常简单的规则进行变形的,因此您可以只使用前缀:

SELECT  *
FROM content
WHERE CONTAINS((Title,Subtitle,Body), 'model* NEAR airplane*')

或使用AND并在客户端进行精细过滤

SELECT  *
FROM ft
WHERE CONTAINS((Title,Subtitle,Body), 'FORMSOF(INFLECTIONAL, "model") AND FORMSOF(INFLECTIONAL, "airplane")')

关于sql-server - SQL Server 全文搜索使用 CONTAINS、FORMSOF、NEAR 进行多个搜索词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4726627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com