【问题标题】:Full text index and parametrized query with asp.net使用 asp.net 的全文索引和参数化查询
【发布时间】:2011-05-25 07:48:35
【问题描述】:

我有一个内部构建的查询构建器,它使用全文索引来执行描述搜索。

查询已构建并参数化,我想知道从网站编码表单字段以传递搜索字符串的最佳方法,例如:

  1. 涵盖
  2. “黄色”附近的“红色”
  3. 红“鱼”

谢谢

【问题讨论】:

  • 您的意思是要对参数值进行编码以避免 SQL 注入并同时支持特殊字符?你的存储过程的输入参数是什么类型的?
  • 它没有使用存储过程,它是一个参数化查询,所以查询看起来像 Select x from y where q = @param1。我希望能够向用户展示全文索引的力量。所以他们可以说给我所有“衬衫”附近有“红色”的东西。
  • 本实例中的参数类型为字符串,抱歉之前的评论忘记说了。

标签: asp.net sql-server full-text-search


【解决方案1】:

如果您想使用全文搜索,您应该将 where 子句与其他特定功能一起使用(不仅仅是 = 或 like)。

@param1 仍将是一个字符串(最终为 nvarchar);看这里:

Querying SQL Server Using Full-Text Search

例如,您以这种方式查询(来自 MSDN):

USE AdventureWorks2008R2;
GO
DECLARE @SearchWord nvarchar(30)
SET @SearchWord = N'performance'
SELECT Description 
FROM Production.ProductDescription 
WHERE CONTAINS(Description, @SearchWord);

关于特殊字符和转义它们,请看这里:SQL Server Full Text Search Escape Characters?

【讨论】:

  • 这正是我正在做的,但是通过上面的例子是行不通的。
  • 显示你的 SQL,这个:Select x from y where q = @param1 不起作用,根本不使用全文... CONTAINS 在哪里?你如何执行查询?
  • 对不起,这不是一个很好的例子,我现在使用微软文章解决了它。但是全文搜索字符的文章已经解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
相关资源
最近更新 更多