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