Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Умный поиск по большой таблице mysql
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Загорелся идеей сделать классный сайт - электронную библиотеку. Возникла проблема с поиском книг по сайту. Книг много (≈ пол миллиона), обычный запрос SELECT LIKE "%запрос%" работает долго (≈ 1.5 сек). Хотелось бы ускорить, и сделать поиск не по точному совпадению, не очень чувствительным к порядку слов. У многих книг есть список ключевых слов. По поводу ускорения поиска есть две идеи: 1) создать таблицу в которой ключевые слова книг расположены в алфавитном порядке. Получая запрос сравнить его с центральной строкой таблицы если запрос выше по алфавиту, то сравнить со строкой что по центру верхней половины, иначе - c нижней. 2) создать таблицу в которой ключевые слова книг превращены в числа и используются как айди строки в которой лежит книга. К примеру, если ключевое слово состоит из маленьких букв русского алфавита, то его можно считать числом записанным в 33-тичной системе счисления. Такое число можно переписать в привычной десятичной системе, тем самым сразу получив айди строки в которой лежит книжка. Все же у меня в этом мало опыта, я не очень представляю себе как делается нормальный поиск (который не по точному совпадению). Надеюсь кто-нибудь посоветует чего:3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 23:20 |
|
||
|
Умный поиск по большой таблице mysql
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 23:37 |
|
||
|
Умный поиск по большой таблице mysql
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 23:45 |
|
||
|
Умный поиск по большой таблице mysql
|
|||
|---|---|---|---|
|
#18+
yuriy475, поставь версию 5.7 и будет счастье в 10 000 000 поиск с like 4сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2017, 23:53 |
|
||
|
Умный поиск по большой таблице mysql
|
|||
|---|---|---|---|
|
#18+
Akina, спасибо, то что нужно! Буду эту штуку использовать. Жаль только что не исправляет ошибки в словах :c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2017, 14:04 |
|
||
|
Умный поиск по большой таблице mysql
|
|||
|---|---|---|---|
|
#18+
автор Жаль только что не исправляет ошибки в словах :c https://github.com/adriannuta/SphinxAutocompleteExample ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2017, 19:43 |
|
||
|
Умный поиск по большой таблице mysql
|
|||
|---|---|---|---|
|
#18+
По поводу ускорения поиска есть две идеи: 1) создать таблицу в которой ключевые слова книг расположены в алфавитном порядке. Получая запрос сравнить его с центральной строкой таблицы если запрос выше по алфавиту, то сравнить со строкой что по центру верхней половины, иначе - c нижней. Да проще все, мастер/детейл книга/ключевые слова, и индекс на слово. будет быстро. 2) создать таблицу в которой ключевые слова книг превращены в числа и используются как айди строки в которой лежит книга. К примеру, если ключевое слово состоит из маленьких букв русского алфавита, то его можно считать числом записанным в 33-тичной системе счисления. Такое число можно переписать в привычной десятичной системе, тем самым сразу получив айди строки в которой лежит книжка. это бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2017, 09:57 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1830688]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 133ms |

| 0 / 0 |
