18.02.2016, 13:05
|
Интересующийся
|
|
Регистрация: 28.09.2015
Сообщений: 12
|
|
поиск в русской строке вводя английские символы
Собственно вопрос заключается в заголовке темы.
Как реализовать поиск по строке с русскими буквами вводя английские символы, т.е. научить понимать что хочет ввести пользователь.
|
|
19.02.2016, 08:37
|
Интересующийся
|
|
Регистрация: 28.09.2015
Сообщений: 12
|
|
никто так и не ответит? никто не задавался данным вопросом что ли?
|
|
19.02.2016, 08:39
|
Профессор
|
|
Регистрация: 21.12.2012
Сообщений: 869
|
|
Спроси гугл
Или к примеру задать соответствие раскладок русская-английская и при поиске мапить
|
|
19.02.2016, 10:52
|
Интересующийся
|
|
Регистрация: 28.09.2015
Сообщений: 12
|
|
не отвечает гугл
может как то возможно с помощью словаря?
|
|
19.02.2016, 11:20
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
|
|
19.02.2016, 11:26
|
Интересующийся
|
|
Регистрация: 28.09.2015
Сообщений: 12
|
|
это конечно хорошо, но мне необходим почти тот же функционал только на сайте. идеальный пример, это сайт 2gis(не реклама). там не важно на какой раскладке вводишь, поисковая строка понимает что хотят найти
|
|
19.02.2016, 11:58
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
git_bind,
сделай словарик типо
replacer = {
"q": "й", "w": "ц", "e": "у", "r": "к", "t": "е", "y": "н", "u": "г",
"i": "ш", "o": "щ", "p": "з", "[": "х", "]": "ъ", "a": "ф", "s": "ы",
"d": "в", "f": "а", "g": "п", "h": "р", "j": "о", "k": "л", "l": "д",
";": "ж", "'": "э", "z": "я", "x": "ч", "c": "с", "v": "м", "b": "и",
"n": "т", "m": "ь", ",": "б", ".": "ю", "/": "."
};
и через Str.replace заменяй.
|
|
19.02.2016, 12:05
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
<div id="replace">
<input type="text" class="street edit-state-street" maxlength="50" />
</div>
<script>
replace.oninput = function (e) {
var el = e ? e.target : window.event.srcElement;
if (el.tagName != "INPUT") return;
var replacer = {
"q": "й",
"w": "ц",
"e": "у",
"r": "к",
"t": "е",
"y": "н",
"u": "г",
"i": "ш",
"o": "щ",
"p": "з",
"[": "х",
"]": "ъ",
"a": "ф",
"s": "ы",
"d": "в",
"f": "а",
"g": "п",
"h": "р",
"j": "о",
"k": "л",
"l": "д",
";": "ж",
"'": "э",
"z": "я",
"x": "ч",
"c": "с",
"v": "м",
"b": "и",
"n": "т",
"m": "ь",
",": "б",
".": "ю",
"/": "."
};
var str = el.value;
el.value = str.replace(/[A-z/,.;\'\]\[]/g, function (x) {
return x == x.toLowerCase() ? replacer[x] : replacer[x.toLowerCase()].toUpperCase();
});
};
</script>
|
|
19.02.2016, 13:33
|
Интересующийся
|
|
Регистрация: 28.09.2015
Сообщений: 12
|
|
спасибо больше! реально полезный код. но у меня теперь возникает вопрос, как быть с английскими словами? объясню наглядно для чего вся эта затея.
имеется таблица, в ней записаны значения:
|имя слоя | источник|
|геоданные 2015 |http://localhost/.....|
|cosmo_tile_2015 |http://localhost/.....|
ну и много другое(порядка 200 шт.)
сейчас поиск реализован с помощью jquery.filtertable
поиск устраивает, но увидев на вышеупомянутом сайте функционал поисковой строки, захотел подобное реализовать.
т.е. вводя "геодан" не сменив раскладку фильтровалось так же, как и вводя на русском "геодан". ну и аналогично с "cosmo"
|
|
19.02.2016, 13:47
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
git_bind,
фильтровать сначала по одному, потом попытаться по-другому, если для первого случая неудачно. Допустим вводим utjlfyyst (геоданные) и фильтруем сначала для первого случая, потом для второго. Я не думаю, что в таблице будут записи типа 'utjlfyyst...'
|
|
|
|