Default.aspx <form id="form1" runat="server"> <div style="text-align: center"> <span style="color: #ff6600"><strong>TÌM KIẾM TƯƠNG ĐỐI</strong></span><br /> <span style="font-size: 10pt; font-family: Verdana"> Nhập từ cần tìm:</span> <asp:TextBox ID="TextBox1" runat="server" Width="421px"></asp:TextBox> <asp:Button ID="btnSeach" runat="server" Text="Seach" OnClick="btnSeach_Click" /><br /> <br /> <hr /> <asp:Label ID="lblSQL" Text="" runat="server"></asp:Label> </div> </form>
Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; /// Author: Trương Đức Tài /// 09/11/2009 (dd/mm/yyy) /// Phone: 0979.116118 using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using TimKiemGanDung.Utilities; namespace TimKiemGanDung { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnSeach_Click(object sender, EventArgs e) { string keyWord = TextBox1.Text; string sql = string.Empty; sql = SearchApproximate.ApproximateSearch(keyWord); lblSQL.Text = sql; // Khi có được chuỗi sql như trên các bạn biết phải làm gì rồi chứ? // Thanks! } } } SearchApproximate.cs using System; using System.Data; using System.Configuration; /// Author: Trương Đức Tài /// 09/11/2009 (dd/mm/yyy) /// Phone: 0979.116118 using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Text; namespace TimKiemGanDung.Utilities { public class SearchApproximate { // Phương thức trả về câu lệnh SQL dùng truy vấn dữ liệu public static string ApproximateSearch(string keyWord) { string sql = "SELECT * FROM Employer WHERE FullName LIKE "; return sql + "N'" + Exec(keyWord) + "' OR FullName LIKE N'" + Exec(ConvertVN.Convert(keyWord)) + "'"; } // Phương thức chuyển đổi một chuỗi ký tự: Nếu chuỗi đó có ký tự " " sẽ thay thế bằng "%" public static string Exec(string keyWord) { string[] arrWord = keyWord.Split(' '); StringBuilder str = new StringBuilder("%"); for (int i = 0; i < arrWord.Length; i++) { str.Append(arrWord[i] + "%"); } return str.ToString(); } } } ConvertVN.cs /// Author: Trương Đức Tài /// 09/11/2009 (dd/mm/yyy) /// Phone: 0979.116118 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace TimKiemGanDung.Utilities { public class ConvertVN { // Phương thức Convert một chuỗi ký tự Có dấu sang Không dấu public static string Convert(string chucodau) { const string FindText = "áàảãạâấầẩẫậăắằẳẵặđéèẻẽẹêếềểễệíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵÁÀẢÃẠÂẤẦẨẪẬĂẮẰẲẴẶĐÉÈẺẼẸÊẾỀỂỄỆÍÌỈĨỊÓÒỎÕỌÔỐỒỔỖỘƠỚỜỞỠỢÚÙỦŨỤƯỨỪỬỮỰÝỲỶỸỴ"; const string ReplText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyyAAAAAAAAAAAAAAAAADEEEEEEEEEEEIIIIIOOOOOOOOOOOOOOOOOUUUUUUUUUUUYYYYY"; int index = -1; char[] arrChar = FindText.ToCharArray(); while ((index = chucodau.IndexOfAny(arrChar)) != -1) { int index2 = FindText.IndexOf(chucodau[index]); chucodau = chucodau.Replace(chucodau[index], ReplText[index2]); } return chucodau; } } } Mã nguồn tải tại đây (Đã hoàn thành 99%, các bạn hãy chạy thử và hoàn thành tiếp bộ tìm kiếm với kết nối CSDL nhé) Author: Trương Đức Tài
Categories:
C#
2 comments:
Hay....nhung hoi thieu chut xiu... doi minh lam not roi post len tiep
bạn ơi cho mình hỏi cái code like N'%st%' Nếu st là những từ có âm ô or ò thì nó lại search ko ra kết quả
ví dụ: chuỗi mẹ: ... nhờ pha lập công của abc trong vòng 16m ...
st=nhờ pha lập -> ra kết quả
st=nhờ pha lập công --> ko ra kết quả
st=công --> không ra kết quả
st=ô -->không ra kết quả
st=vòng --> không ra kết quả
st=ò -->không ra kết quả
st=của abc --> ra kết quả
Mong được bạn giúp đỡ
Post a Comment