我被困在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匹配,我也希望返回结果。条件是搜索关键字中的单词可以是任何顺序。包含减慢存储过程的速度,因此该选项无法工作。
任何帮助都将不胜感激。
答案 0 :(得分:2)
SQL Server全文搜索应该可以帮助您。您基本上将在要搜索的列上创建索引。在查询的where子句中,您将使用CONTAINS运算符并将其传递给您的搜索输入。
你可以开始http://msdn.microsoft.com/en-us/library/ms142571.aspx或 http://beingoyen.blogspot.in/2008/09/full-text-search-step-by-step-tutorial.html 了解更多
已经在stephen776的不同帖子中回答了
再次发布此处以提高知名度
答案 1 :(得分:1)
您应该创建全文索引。这就是他们的目标。然后,您可以使用contains
或freetext
功能在列中进行搜索。
警告:全文搜索非常强大,你应该熟悉可能性和警告(禁用词组!)。