搜索产品的存储过程,包含任何顺序的单词

时间:2013-07-05 05:59:20

标签: sql-server

我被困在nopcommerce存储过程中,产品搜索很安静。所以我不能发布代码。但是商店程序的一部分是

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

这里我已将关键字转换为带有分隔符的关键字,例如'gemini oil'到'%gemini%oil%',如果p.name为'Gemini Refined Sunflower Oil',它的工作正常。

但是如果我的关键字是'%oil%gemini%'则不起作用。所以即使搜索关键字中的单词与p.name匹配,我也希望返回结果。条件是搜索关键字中的单词可以是任何顺序。包含减慢存储过程的速度,因此该选项无法工作。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

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

你可以开始http://msdn.microsoft.com/en-us/library/ms142571.aspxhttp://beingoyen.blogspot.in/2008/09/full-text-search-step-by-step-tutorial.html 了解更多

已经在stephen776的不同帖子中回答了

再次发布此处以提高知名度

答案 1 :(得分:1)

您应该创建全文索引。这就是他们的目标。然后,您可以使用containsfreetext功能在列中进行搜索。

警告:全文搜索非常强大,你应该熟悉可能性和警告(禁用词组!)。