по какому принцепу работает замена слов?
#1
Отправлено 27 февраля 2008 - 01:56
"возможно, вы имели ввиду ...". Возьмём в пример слово "прИмер", напишу я его через Е - "прЕмер", гугль сразу отреагирует... каким образом он подбирает символы в слово? Есть соображения?
#2
Отправлено 27 февраля 2008 - 02:33
Иду по слову, ища в базе все слова с совпадающей первой буквой, среди них со второй, среди этих с третьей и т.д. Если слово совпадает в итоге, то выдаю результаты запроса.
Если же попадается несовпадающая буква, то запускаю эту же самую процедуру (рекурсия), только передаваемым словом будет слово, начиная с n+2 буквы, если n-ная буква была последней совпавшей.
Каждая из рекурсивно запущенных процедур будет выбирать из имеющихся в базе слов наиболее похожее (больше всего букв совпало) на свой параметр и возвращать его в родительскую процедуру.
Таким образом, на выходе мы получим слово, наиболее похожее на введенное.
В данном алгоритме я не учитывал то, что Гугл может вести сложную статистику по частоте употребления слов, по частоте использования его "подсказки", как критерия правильности этой самой подсказки, и, соответственно, критерия целесообразности ее предложения, и т.д.
А там всё это полюбому есть, Гугл не на коленке делался
Кстати, зачем тебе это?
#3
Отправлено 27 февраля 2008 - 06:35
Хотел было поразмышлять на эту тему, но к сожалению, ничего интересного на ум не лезет, задача достаточно сложная и практически нереализуемая в "домашних условиях". В таких случаях я обычно задаю интересующий меня вопрос гуглю и вот что он об этом думает: http://www.google.ru...eid=navcl...ду"
#4
Отправлено 27 февраля 2008 - 09:11
или http://ee.php.net/ma...levenshtein.php (эта вроде перформит лучше)
#5
Отправлено 27 февраля 2008 - 09:23
Вот нашел ... не плохое описание.
http://www-igm.univ-...ring/node6.html
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#8
Отправлено 27 февраля 2008 - 13:01
Принцип работы: высчитывает код звучания слова для дальнейшего его сравнения с другими ключами. Довольно-таки быстр
Сообщение изменено: zedirtybastard (27 февраля 2008 - 13:04 )
#11
Отправлено 27 февраля 2008 - 14:09
Но с русским оно не дружит Я кстати, тоже о ней подумал в первую очередь.http://ru.wikipedia.org/wiki/Soundex
Принцип работы: высчитывает код звучания слова для дальнейшего его сравнения с другими ключами. Довольно-таки быстр
Бывает)Setor, пардон, щас выспался и стыдно стало за написанное
#12
Отправлено 27 февраля 2008 - 15:25
#13
Отправлено 27 февраля 2008 - 15:32
StrikeR, если хочешь практиковаться, можешь сделать вот что: человек вводит запрос, а ты тем временем аяксом отсылаешь его на сервер, который по нему делает поиск и сразу выводит список наиболее популярных значений... как у гугля сделано, не помню название этой фишки Возможно, тогда чел не ошибётся и найдёт нужный ему вариант из списка.
#14
Отправлено 27 февраля 2008 - 15:49
Сейчас не важно на русском будет пользователь писать, или на англиЦком, да хоть на арабском, главное хоть что-то что бы получилось, а дальше уже совершенствовать.
Setor, Для того, что бы сервер делал поиск по запросу, нужно что-то написать для него Но мне интересен процес именно внутри флеша, т.е. вся программерская часть планируется быть написанной на AS, без вмешательства других языков
#16
Отправлено 27 февраля 2008 - 15:53
Ему до языков похрен ... хоть unicode
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#18
Отправлено 27 февраля 2008 - 17:09
Две вечные проблемы:но для начала можно обойтись и массивом в 10 слов, что бы протестить
1) На 10 строчках работает хорошо, пусть работает.. Когда будет 100 строк и на клиенте подвиснит флеш что будешь делать?
2) На самом деле в базе не будет больше 100 строк, но планируют сразу на миллион
P.S. я бы написал хранимку по алгоритму, предложенному Incubo