Sql server 用于搜索具有任意顺序单词的产品的存储过程

Sql server 用于搜索具有任意顺序单词的产品的存储过程,sql-server,Sql Server,我被产品搜索的nopcommerce存储过程卡住了,它非常大。所以我不能发布代码。但存储过程的一部分是 where --Some conditions AND ( @SearchKeywords = 0 or ( patindex(@Keywords, p.name) > 0 ) ) 在这里,我已将关键字转换为带分隔符的关键字,例如“双子油

我被产品搜索的nopcommerce存储过程卡住了,它非常大。所以我不能发布代码。但存储过程的一部分是

where 
   --Some conditions
AND (
                @SearchKeywords = 0 or 
                (
                patindex(@Keywords, p.name) > 0  
                    )
)

在这里,我已将关键字转换为带分隔符的关键字,例如“双子油”转换为“%双子油%”,如果p.name为“双子精制葵花油”,则其工作正常

但若我的关键字是“%oil%gemini%”,那个么它就不起作用了。所以,基本上,我希望返回结果,即使搜索关键字中的单词与p.name匹配,条件是搜索关键字中的单词可以是任意顺序。Contains会减慢存储过程,使选项无法工作


任何帮助都将不胜感激。

您应该创建全文索引。这就是它们的用途。然后,您可以使用
contains
freetext
函数在列中搜索


警告:全文搜索功能非常强大,您应该熟悉各种可能性和注意事项(禁止使用词列表!)。

SQL Server全文搜索应该可以帮助您。基本上,您将在要搜索的列上创建索引。在查询的where子句中,您将使用CONTAINS运算符并将搜索输入传递给它

你可以开始,也可以开始 了解更多

已在不同的帖子中由stephen776回复


再次在此处发布以增加可见性

thanx,我不太熟悉索引,将对此进行研究