我正在使用vs 2012 Professional和SQL-Server 2012 Express。
我试图运行Admin.aspx,它有一个文本框来搜索数据库中的用户。
但是,每次我尝试搜索用户名时都会收到此错误
Cannot use a CONTAINS or FREETEXT predicate on table or indexed view 'users' because it is not full-text indexed.
从我搜索的全文索引需要启用,在我的情况下,它在SQL Server Management Studio中显示为灰色,在Express版本中不可用(???)。
我怎么能解决这个问题?
Admin.aspx
Imports System.Data.SqlClient
Partial Class Admin
Inherits System.Web.UI.Page
Protected Sub btnSearchUser_Click(sender As Object, e As EventArgs) Handles btnSearchUser.Click
Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True")
Dim searchComm As String = "SELECT username FROM users WHERE CONTAINS (username, @username)"
Dim searchSQL As New SqlCommand
conn.Open()
searchSQL = New SqlCommand(searchComm, conn)
searchSQL.Parameters.AddWithValue("@username", txtUserSearch.Text)
Dim datareader As SqlDataReader = searchSQL.ExecuteReader()
While datareader.Read
lstUsers.Items.Add(datareader.Item("username"))
End While
datareader.Close()
conn.Close()
End Sub
End Class
如您所见,用户在搜索框中输入用户名,并且对于包含文本框输入内容的每个记录,都会将其添加为列表框中的项目。
答案 0 :(得分:1)
我不相信你需要全文搜索来检查用户名中的相等性。您认为可以使用以下代替CONTAINS
吗?
SELECT username FROM dbo.users WHERE username = @username;
如果您绝对觉得需要全文搜索,那么:
SQLEXPRADV_x64_ENU.exe
)。示例:
CREATE FULLTEXT CATALOG my_catalog;
GO
CREATE FULLTEXT INDEX
ON dbo.users(username LANGUAGE 1033)
KEY INDEX uq_un ON my_catalog;
答案 1 :(得分:0)
全文索引至少需要SQL Server Express使用高级服务,标准Express版本不具备全文索引功能。
然后您可以创建全文目录和索引,有关详细信息,请参阅以下链接: