我尝试在MariaDB上进行全文搜索,遇到了一个我无法处理的问题。
我的表格生成为;
CREATE TABLE test (email TEXT, FULLTEXT(email)) ENGINE=InnoDB;
然后插入一些数据;
MariaDB [frauctive]> select * from test;
+---------------------------------+
| email |
+---------------------------------+
| david@hotmail.com |
| michael@gmail.com |
| christian@gmail.com |
| david01@hotmail.com |
| davidblatt@hotmail.com |
| beckhamdavidbeckham@hotmail.com |
+---------------------------------+
当我使用匹配功能时,我无法检索我想要获得的相似度分数;
MariaDB [frauctive]> SELECT email, MATCH(email) AGAINST('*david*' IN BOOLEAN MODE) AS relevance
-> FROM test ORDER BY relevance DESC;
+---------------------------------+--------------------+
| email | relevance |
+---------------------------------+--------------------+
| david@hotmail.com | 0.0906190574169159 |
| david01@hotmail.com | 0.0906190574169159 |
| davidblatt@hotmail.com | 0.0906190574169159 |
| michael@gmail.com | 0 |
| christian@gmail.com | 0 |
| beckhamdavidbeckham@hotmail.com | 0 |
+---------------------------------+--------------------+
Altough" beckhamdavidbeckham@hotmail.com"条目包含' david'模式,得分返回0.
你能帮我解决这个问题吗?
答案 0 :(得分:0)
关于* wildcard:
通配符,表示零个或多个字符。它只能出现在一个单词的末尾。
源: https://mariadb.com/kb/en/mariadb/fulltext-index-overview/
请尝试:
protected void OnUpdate(object sender, EventArgs e)
{
string StrConnString = ConfigurationManager.ConnectionStrings["BenzConnectionString"].ToString();
SqlConnection objConn = new SqlConnection(StrConnString);
try
{
objConn.Open();
SqlCommand objCmd = new SqlCommand("UPDATE Employee SET FirstName = @sFirstName," +
" LastName = @sLastName," +
" EMail = @sEMail, " +
"PhoneNo = @sPhoneNo, " +
"PositionID = @sPositionID, " +
"DepartmentID = @sDepartmentID" +
" WHERE EmployeeID = @sEmployeeID", objConn);
objCmd.Parameters.AddWithValue("@sFirstName", txtfirstname.Text);
objCmd.Parameters.AddWithValue("@sLastName", txtlastname.Text);
objCmd.Parameters.AddWithValue("@sEMail", txtemail.Text);
objCmd.Parameters.AddWithValue("@sPhoneNo", txtphone.Text);
objCmd.Parameters.AddWithValue("@sPositionID", dpposition.Text);
objCmd.Parameters.AddWithValue("@sDepartmentID", dpcenter.Text);
objCmd.Parameters.AddWithValue("@sEmployeeID", empno);
objCmd.ExecuteNonQuery();
objCmd = new SqlCommand("UPDATE Item SET Brand = @sBrand, " +
"Model = @sModel, " +
"Serial_No = @sSerial_No, " +
"Macaddress = @sMacaddress, " +
"ItemTypeID = @sItemTypeID, " +
"ReceiveDate = @sReceiveDate " +
"WHERE ItemID = @sItemID ", objConn);
objCmd.Parameters.AddWithValue("@sBrand", txtbrand.Text);
objCmd.Parameters.AddWithValue("@sModel", txtmodel.Text);
objCmd.Parameters.AddWithValue("@sSerial_No", txtserial.Text);
objCmd.Parameters.AddWithValue("@sMacaddress", txtmac.Text);
objCmd.Parameters.AddWithValue("@sItemTypeID", dptype.Text);
objCmd.Parameters.AddWithValue("@sReceiveDate", txtreceiveddate.Text);
objCmd.Parameters.AddWithValue("@sItemID", itemid);
objCmd = new SqlCommand("UPDATE SET InventoryLine SET Transaction_date = @sTransaction_date," +
" ReturnDate = @sReturnDate " +
"WHERE InventoryID = @sInventoryID", objConn);
objCmd.Parameters.AddWithValue("@sReturnDate", txtreturndate.Text);
objCmd.Parameters.AddWithValue("@sTransaction_date", txtreturndate.Text);
objCmd.Parameters.AddWithValue("@sInventoryID", inventoryid);
objCmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write("<br/> Error : " + ex.Message);
}
finally
{
objConn.Close();
}
}
或者
MariaDB [frauctive]> SELECT email, MATCH(email) AGAINST('david*' IN BOOLEAN MODE) AS relevance
-> FROM test ORDER BY relevance DESC;