нестрогий поиск в lorien
и выводить - может имеллось ввиду это ""?
Имена файлов - не текст, в этом основная проблема. Довольно часто люди ищут файлы с непотребными названями типа xchtmnnd.pkg. С точки зрения языка тут сплошные орфографические ошибки, таких слов нет итп. А файлы как раз такие бывают.
xchtmnnd.pkg
я так понимаю скорость поиска слова даже с одной ошибкой возрастет этак в 40 раз.
зачем это? давайте лучше память тренировать и английский.
а об опечатках лучше просто уведомлять
Откуда такие сведения? Есть какие-то замеры? Теоретические оценки?
Сейчас используется очень простой Shift-And алгоритм (вариант которого встроен в программу agrep).
Средние времена такие (при условии что результатов поиска мало):
обычный поиск (Boyer-Moore) - 0.21 сек
поиск без ошибок - 0.24 сек
с 1 ошибкой - 0.30 сек
с 2 ошибками - 0.31 сек
с 3 ошибками - 0.33 сек
с 4 ошибками - 0.36 сек
В общем, налицо совершенно другая зависимость.
http://www.aot.ru
Это морфология для русского и (?) английского языков.Раздают исходники, работает б.м. стабильно.
может тебе будет интересно: Это морфология для русского и (?) английского языков.Раздают исходники, работает б.м. стабильно.
хотя поиск по словоформам, наверное, был бы полезен
А вот если бы была возможность добавить к файлам description и по нему искать....
Можно попробовать поиграться с хэшами.
Из недостатков: написан он крайне криво, и еще никому вроде как не удалось сделать его многопоточным.
Оставить комментарий
Landstreicher
Пытаюсь реализовать нестрогий поиск в lorien. Написал простенький вариант, позволяет искать с k <= 4 ошибками. Для желающих поэкспериментировать - при работе с напрямую поисковым сервером указывайте вместо SUBSTR "abcdef" строку ERRSTR("abcdef",число ошибок).Возникли такие вопросы:
1. Как быть если ищут сразу несколько слов? Пусть, например, пользователь ищет abcdef и pqrstu с 2 ошибками. Возможны такие варианты:
а) разрешить наврать в каждом слове 2 ошибки
б) разрешить наврать в каждом слове 1 ошибку (2 ошибки/2 слова = 1)
в) разрешить наврать в каждом до 2 ошибок, но суммарное число ошибок не должно превышать 2 (т.е. варианты 2+0, 1+1, 0+2).
2. Как определять количество ошибок? На коротких словах (около 5-6 букв) указание 2-3 ошибок приводит к огромному росту числа совпадений и фактически указывать 3 и более ошибки бесмысленно. С другой стороны, на длинных словах (~12 букв) 2-3 ошибки - довольно типично и часто не хватает. Возможно, имеет смысл определять максимально допустимую долю ошибок. То же относится например к поиску нескольких слов. Например, поиск по aaaa bbbbbbbb с 3 ошибками может распределить ошибки так: не более 1 в aaaa и не более 2 в bbbbbbbb.
3. Имеет смысл делать ошибки неравноценными. Сейчас разница между feet и fit составляет 2 буквы, и разница между feet и peer тоже составляет 2 буквы. Однако, очевидно, что первую ошибку люди делают гораздо чаще (запоминают часто по произношению). Можно ввести например, что замена гласной на согласную имеет вес больший чем гласной на похожую гласную.
Интересуют любые соображения по этим вопросам.