Datatables filter with both cyrillic and latin at once
Datatables filter with both cyrillic and latin at once
Hi, new here, I know there is a need for the test case, but, my question is just theorhetical:
I have a large table with mixed cyrilic and latin characters, when I am searching "Maria" in latin, it's not showing the cyrillic results (which is my goal to show both).
So my goal is to search both latin and cyrillic results with a single query.
Example: Querying "Maria" , the table will show both "Maria" and "Мариа"
any help appreciated!
PS: I have my own javascript transliterate script which is OK, but I am not sure how to "implant" it to the databtables to work correctly:
var a = {"Њ":"NJ","Ж":"ZH","ж":"zh","Ш":"SH","ѓ":"gj","Ѓ":"GJ","ш":"sh","Џ":"GJ","ќ":"kj","Ќ":"KJ","Ј":"J","ј":"j","ч":"ch","ч":"ch","џ":"gj","И":"I","Ц":"C","У":"U","К":"K","Е":"E","Н":"N","Г":"G","З":"Z","Х":"H","Ч":"CH","ц":"c","у":"u","к":"k","е":"e","н":"n","г":"g","з":"z","х":"h","Ф":"F","В":"V","А":"A","П":"P","Р":"R","О":"O","Л":"L","Д":"D","е":"e","ф":"f","в":"v","а":"a","п":"p","р":"r","о":"o","л":"l","д":"d","С":"S","М":"M","И":"I","Т":"T","Б":"B","с":"s","м":"m","и":"i","т":"t","б":"b"};
var a2 = {"NJ":"Њ","ZH":"Ж","zh":"ж","SH":"Ш","gj":"ѓ","GJ":"Ѓ","sh":"ш","GJ":"Џ","kj":"ќ","KJ":"Ќ","J":"Ј","j":"ј","ch":"ч","ch":"ч","gj":"џ","I":"И","C":"Ц","U":"У","K":"К","E":"Е","N":"Н","G":"Г","Z":"З","H":"Х","CH":"Ч","c":"ц","u":"у","k":"к","e":"е","n":"н","g":"г","z":"з","h":"х","F":"Ф","V":"В","A":"А","P":"П","R":"Р","O":"О","L":"Л","D":"Д","e":"е","f":"ф","v":"в","a":"а","p":"п","r":"р","o":"о","l":"л","d":"д","S":"С","M":"М","I":"И","T":"Т","B":"Б","s":"с","m":"м","i":"и","t":"т","b":"б"};
function transliterate(word){
return word.split('').map(function (char) {
return a[char] || char;
}).join("");
}
function transliterate2(word){
return word.split('').map(function (char) {
return a2[char] || char;
}).join("");
}
Answers
It would be worth looking at the fuzzy search plugin discussed in this blog post - that may offer a solution,
Colin
Hi @colin , sorry to disappoint you,but this is only a Levenshtein approach for typos, it's not including different characters being mapped as in my example.
You might need to create a Search Plugin to handle this. This plugin might get you started.
Kevin
Yes, no question - a search plug-in would be needed. That's how our own fuzzy search works as well.
It might make a nice addition to the plug-in if you are willing to share what you implement?
Allan
@kthorngren @allan
Yes I will work on that later that week, and I will publish it (help may be needed for that). It will be mainly for Macedonian characters, but with slight modification it could be extended to other character sets as well.
Awesome - I look forward to seeing what you cook up
Allan
So in the end, I just modified locally THIS plugin, changed the unicode values, added all possible letter combinations and got the result. It works, however, when I have some html formatted text (<b> tags usually) , it just ignores my search query. Also, can I somehow modify both input and search query fo uppercase the whole word/datatable values ? I mean case-insensitive search.
Can you create a test case on http://live.datatables.net for us to see what is going on please?
Allan
http://live.datatables.net/yexofife/1/
here is an example..
added few cyrillic entries to the datatable, try first to search Cedric with latin letters
@allan - the code works, however, until now I am still stuck with the formatted <td> output. It being ignored by "my" script..
I've changed the <td> to:
<td><b>Цедриц Келли</b></td>
so added bold formatting, and now it cannot be searched..
Any ideas how to fix that? This is the only thing I need and it will be perfect!