|
|
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
Добрый день! Сейчас изучаю данный вопрос, подскажите у кого такое реализовано.... Что да как? Нужен поиск по любой части слова с возможностью исправить ошибки в опечатке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 13:22:00 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
интересует именно на MySQL без надстроек типо сфинкса, nosql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 13:26:14 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. вот нашел функцию с алгоритмом Левенштейна, результат кол-во преобразований для трансформации одной строки в другую а как теперь продолжить идею..... нужно использовать это в БД и выводить текстовый результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 14:15:27 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
а чем полнотекст не подошел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 14:40:48 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
ScareCrowа чем полнотекст не подошел?А что, он умеет игнорировать опечатки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 14:55:46 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
ScareCrow, у меня InnoDb а с ним головняк сделать такой поиск у меня всего одна колонка с наименованиями не более 50 символов, сегодня встречал кучу сайтов где такое реализовано и довольно быстро работает попробывал с данным алгоритмом, выполняется 15сек - очень долго нашол два алгоритма Левенштейна , сча буду тестить мне по сути надо не более 2-ух преобразований, чтобы получилось вхождение, а тут выполняеться походу до конца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:02:24 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
vip-yсегодня встречал кучу сайтов где такое реализовано и довольно быстро работаета вы уверены, что там не сфинкс или еще что-то? ведь снаружи-то этого не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:03:42 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
miksoft, один сайт конкурента) я уверен что там никакого сфинкса и т.д. нету там чисто Mysql способов куча, но пока 13сек) ищу дальше если у кого есть какие идеи или готовое решение буду благодарен в помощи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:25:40 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
vip-y, И, опять же, вы уверены, что там есть какие-то навороты типа "триграммного поиска", а не тупой LIKE '%подстрока%' ? Теоретически на таблицах можно построить структуры для имитации работы того же сфинкса, только смысла в этом не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:32:33 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
miksoft, да там не просто LIKE, т.к. если ошибка в одной или двух буквах, то заменяет на правильно но если для замены две буквы вместе стоят - то не работает Пример: Автамобиль, Автамабиль - > Автомобиль Автапобиль - > ничего не найдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 15:49:04 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
miksoftScareCrowа чем полнотекст не подошел?А что, он умеет игнорировать опечатки? а он не умеет??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:09:50 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
ScareCrowmiksoftпропущено... А что, он умеет игнорировать опечатки? а он не умеет???Мне казалось, что нет. В доку лезть, честно говоря, лень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:18:02 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
miksoftScareCrowпропущено... а он не умеет???Мне казалось, что нет. В доку лезть, честно говоря, лень. тред нечетателей доки. http://dev.mysql.com/doc/internals/en/full-text-search.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 16:21:36 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
итак: 1. Sphinx нельзя ставить на виртуальный хостинг на котором я, там запрещены все демоны 2. FullText на InnoDB - костыли другие варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 18:09:21 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
автор. FullText на InnoDB - костыли эм? штатный полнотекст - уже костыли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 18:22:26 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
Если это виртуальных хостинг, то FullText на InnoDB там, скорее всего, нету. Он появился только в версии 5.6, а хостеры не торопятся ставить эту ветку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2014, 18:27:04 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
если использовать like то нет необходимости набирать полностью слова. достаточно использовать только чать слов," информативную часть" и для одной колонки в 50 символов роиск like %zxzx% and like %sdas% and ... работает достаточно быстро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2014, 00:55:09 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
я сделал зеркало таблицы на MyIsam и через JOIN можно делать Fulltext по ней и выводить данные INNODB но как сделать поиск с учетом ошибок? я делал так: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2014, 12:57:12 |
|
||
|
Триграммный поиск или Поиск с опечатками
|
|||
|---|---|---|---|
|
#18+
vip-yодин сайт конкурента) я уверен что там никакого сфинкса и т.д. нету там чисто MysqlА я больше всего не помнимаю - откуда у вас уверенность, что у сайта-конкурента " никакого сфинкса и т.д. нету, там чисто Mysql "? Уверенность может быть только если вы видили код или вам это сказал их разработчик (причём и разработчик мог бы обмануть или не разбираться в MySQL и посчитать сфинксовые запросы обычными MySQL'овскими). Если бы у вас была возможность получить информацию о том что там " никакого сфинкса и т.д. нету, там чисто Mysql ", то вы бы с такой же лёгкостью получили бы ответ - каким образом там этот поиск делается. Единственная малюсенькая надежда на то, что там нету ничего кроме MySQL, у вас могла бы быть если бы конкурент работал бы на том же хостинге, что и вы, и в условиях этого хостинга написано что НИКОМУ ни за какие деньги нельзя поставить там сфинкс (на котором работает 90% сайтов с поиском допускающим опечатки). А может они позвонили тому хостеру и за дполнительные 5$ в месяц подключили сфинкс? А может у них не тот тарифный план что у вас, и у них можно поставить любой демон? Может у них не виртуальный хостинг? А может они вообще не пользуются MySQL'ом предоставленным хостером, а за 2$ в месяц заказали виртуальный MySQL у другого провайдера в который входит сфинкс? А может там опечатки PHP исправляет? Да сотня вариантов есть... В общем, если бы у вас была возможность знать что там сфинкса нет, то у вас была бы возможность и на чём они работают. Да и зачем нужны демоны сфинкса? Только для автоматизации? Никто не мешает вам это делать самостоятельно. 10 лет назад и без сфинкса обходились для поиска с учётом опечаток, самостоятельно хранили триграммы в словорях... У вас кстати какой объём текста по которому производится поиск? Может там быстрее создать LIKE со всеми вариантами опечаток, чем триграммы строить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2014, 15:12:18 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38663852&tid=1834668]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 347ms |

| 0 / 0 |
