Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

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

start [/forum/topic.php?fid=47&mobile=1&tid=1830688]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 127ms |

| 0 / 0 |
