30/09/2018, 17:05

Thuật toán tìm kiếm tên gần giống vơi chuỗi cho trước

Cho mình hỏi, thuật toán tìm kiếm cho ký tự unicode thế nào?
Mình có DB có các col là tên, bla bla… chứa ký tự unicode có dấu, mình muốn khi gõ vào khung search bằng không dấu thì nó tự tìm ra trong DB những cái gần giống với dữ liệu mình vừa gõ
Ai thông não giúp phát! nếu không dấu hết thì mình làm được rồi

Tran Huan viết 19:06 ngày 30/09/2018

Cách đơn giản nhất là chấp nhận dư thừa dữ liệu bằng cách thêm một cột trong db lưu trữ thêm nội dung sau khi loại bỏ dấu. Bạn dùng loại cơ sở dữ liệu nào? Ngôn ngữ lập trình là gì? Nên nêu đủ thông tin trong câu hỏi để mọi người có thể giúp bạn dễ dàng hơn!

Đoàn Hiếu Tâm viết 19:07 ngày 30/09/2018

Mình dùng C# - SQL server. Nếu không dấu thì dùng Search Like %% được. Còn có dấu thì chưa biết

Quân viết 19:10 ngày 30/09/2018

Nếu có dấu thì nên chuyển về không dấu bằng cách thay ký tự có dấu thành không dấu sau đó dùng LIKE thôi.

Đoàn Hiếu Tâm viết 19:11 ngày 30/09/2018

Thuật toán chuyển như sao bạn?

Làm giàu, làm giàu, làm giàu..... viết 19:21 ngày 30/09/2018
public string ConvertString(string stringInput)
{
stringInput = stringInput.ToUpper();
string convert = "ĂÂÀẰẦÁẮẤẢẲẨÃẴẪẠẶẬỄẼỂẺÉÊÈỀẾẸỆÔÒỒƠỜÓỐỚỎỔỞÕỖỠỌỘỢƯÚÙỨỪỦỬŨỮỤỰÌÍỈĨỊ
ỲÝỶỸỴĐăâàằầáắấảẳẩãẵẫạặậễẽểẻéêèềếẹệôòồơờóốớỏổởõỗỡọộợưúùứừủửũữụựìíỉĩịỳýỷỹỵđ";
string To = "AAAAAAAAAAAAAAAAAEEEEEEEEEEEOOOOOOOOOOOOOOOOOUUUUUUUUUUUIIIIIYYYYY
Daaaaaaaaaaaaaaaaaeeeeeeeeeeeooooooooooooooooouuuuuuuuuuuiiiiiyyyyyd";
for (int i = 0; i < To.Length; i++)
{
stringInput = stringInput.Replace(convert[i], To[i]);
}
return stringInput;
}

đây là đoạn code mình dùng để chuyển chuỗi có dấu thành không dấu, mình dùng c#.

Đoàn Hiếu Tâm viết 19:18 ngày 30/09/2018

Mình định làm thêm 1 cột trong database để lưu từ khóa ko dấu (khi nhập dữ liệu mới mình chủ đông convert và thêm dữ liệu ko dấu đó vào côt đó)
Rồi dùng Search like % %

Nhưng khi vậy thì lúc show ra DataGridView cũng hiện luôn cái cột ko dấu đó rất xấu. Còn cách nào không nhỉ

Làm giàu, làm giàu, làm giàu..... viết 19:06 ngày 30/09/2018

sao không convert dữ liệu được load dữ liệu từ sql vào datagridview

Đoàn Hiếu Tâm viết 19:07 ngày 30/09/2018

Là sao mình chưa hiểu ý bạn?

Làm giàu, làm giàu, làm giàu..... viết 19:15 ngày 30/09/2018

à ý tưởng của mình là bạn lấy chuỗi từ datagridview rồi convert sang không dấu, xong so sánh với chuỗi bạn nhập vào khung search.

Đoàn Hiếu Tâm viết 19:17 ngày 30/09/2018

À ý của bạn là search bằng cách duyệt dataGW, còn mình thì định dùng câu lệnh select like % % rồi lấy trực tiếp từ sql luôn. Vì mình định khi search tìm thấy rồi lọc ra những kết quả tìm được show lên dataGW, ẩn mấy cái không trùng đi.

Làm giàu, làm giàu, làm giàu..... viết 19:05 ngày 30/09/2018

hình như sql có viết function chuyển có dấu thành không dấu vì URL giờ đa số không dấu hết

Đoàn Hiếu Tâm viết 19:11 ngày 30/09/2018

Hôm qua hỏi thì có người kêu dùng full-text search. Mà tìm hiểu ko hiểu nó là gì luôn
À DataGW mình load data lên bằng hàm này

public void getData(string cmdString)
        {
           
            connectData();
 
            DataTable dt = main.GetDataTable(cmdString);
 
            this.dataGWMain.DataSource = dt;
 
        }

Thì mình có thể tùy chọn cột nào đc hiển thị, cột nào ko hiển thị bằng cách nào?

Làm giàu, làm giàu, làm giàu..... viết 19:16 ngày 30/09/2018

mình search ra bài này không biết giúp ích gì không

Làm giàu, làm giàu, làm giàu..... viết 19:19 ngày 30/09/2018

mình chưa dùng datagridview lần nào nên pó tay

Đoàn Hiếu Tâm viết 19:19 ngày 30/09/2018

Cái đó sql riêng thì được chứ nếu dùng kết hợp C# mình cũng chưa biết dùng thế nào cả. Vì nó viết hàm riêng cho sql luôn rồi. Mình cũng mới học C# sql có hơn 1 tuần nên còn newbie lắm

Bài liên quan
0