SQL Server 2008中带有空格的全文搜索

Ami*_*rma 3 full-text-search sql-server-2008

使用SQL Server 2008使用全文搜索搜索数据时出现问题.

当我搜索没有空格的数据时它可以工作,但是当我输入带有空格的数据时,它会出错.

就像我搜索'amit'它有效,但如果数据是'amit is working'它给出错误.

我使用ASP.NET MVC 4.0与SQL Server 2008.

谢谢阿米特.

Create PROC [usp_Feedback_Search]
@Word nvarchar(500) ,   
@CompanyId UNIQUEIDENTIFIER     

As
IF ISNULL(@Word,'') = ''
 BEGIN
 Select          
  [Id] ,
[Content] ,    
[UserId],    
 [VoteCount] ,
 [IsOpen],
 [Deleted],
 [RowVersion],    
 [CreatedBy],     
 [CreatedOn],    
 [UpdatedOn],    
 [UpdatedBy],       
 [CompanyId], 
 [DisplayId],
  [Status]
 FROM Feedback         
  WHERE CompanyId=@CompanyId
  END
 ELSE
  BEGIN   

DECLARE @formatedWord varchar(500)='"'+@word+'\+"'

  Select          
  [Id] ,
[Content] ,    
[UserId],    
 [VoteCount],
 [IsOpen],
 [Deleted],
 [RowVersion],    
 [CreatedBy],     
 [CreatedOn],    
 [UpdatedOn],    
 [UpdatedBy],       
 [CompanyId], 
 [DisplayId],
  [Status]    
  FROM Feedback            
  Where CONTAINS(*,@Word)     
  and CompanyId=@CompanyId
  END
 GO
Run Code Online (Sandbox Code Playgroud)

use*_*694 20

我认为阿米特的回答可能是阿米特独有的.对于其他人......

用双引号包装值:

SELECT ... WHERE Contains(tablename.columnname, '"amit is working"')
Run Code Online (Sandbox Code Playgroud)

是答案

使用SQL Server 2008使用全文搜索搜索数据时出现问题.

当我搜索没有空格的数据时它可以工作,但是当我输入带有空格的数据时,它会出错.

就像我搜索'amit'一样有效,但如果数据'amit is working'就会出错.


小智 7

亲爱的,你需要忽略@,空格等外卡字符.

使用下面的更新代码:

Create PROC [usp_Feedback_Search]
@Word nvarchar(500) ,   
@CompanyId UNIQUEIDENTIFIER     

As
IF ISNULL(@Word,'') = ''
 BEGIN
 Select          
  [Id] ,
[Content] ,    
[UserId],    
 [VoteCount] ,
 [IsOpen],
 [Deleted],
 [RowVersion],    
 [CreatedBy],     
 [CreatedOn],    
 [UpdatedOn],    
 [UpdatedBy],       
 [CompanyId], 
 [DisplayId],
  [Status]
 FROM Feedback         
  WHERE CompanyId=@CompanyId
  END
 ELSE
  BEGIN   

DECLARE @formatedWord varchar(500)='"'+@word+'\+"'

  Select          
  [Id] ,
[Content] ,    
[UserId],    
 [VoteCount] ,
 [IsOpen],
 [Deleted],
 [RowVersion],    
 [CreatedBy],     
 [CreatedOn],    
 [UpdatedOn],    
 [UpdatedBy],       
 [CompanyId], 
 [DisplayId],
  [Status]    
  FROM Feedback            
  Where CONTAINS(*,@formatedWord)     
  and CompanyId=@CompanyId
  END
 GO
Run Code Online (Sandbox Code Playgroud)

希望这会有效... http://searchsqlserver.techtarget.com/tip/Using-full-text-search-for-symbols-in-SQL-Server