Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Умный поиск по большой таблице mysql / 7 сообщений из 7, страница 1 из 1
04.05.2017, 23:20
    #39449047
yuriy475
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умный поиск по большой таблице mysql
Здравствуйте.
Загорелся идеей сделать классный сайт - электронную библиотеку. Возникла проблема с поиском книг по сайту. Книг много (≈ пол миллиона), обычный запрос SELECT LIKE "%запрос%" работает долго (≈ 1.5 сек).
Хотелось бы ускорить, и сделать поиск не по точному совпадению, не очень чувствительным к порядку слов.

У многих книг есть список ключевых слов.

По поводу ускорения поиска есть две идеи:
1) создать таблицу в которой ключевые слова книг расположены в алфавитном порядке. Получая запрос сравнить его с центральной строкой таблицы если запрос выше по алфавиту, то сравнить со строкой что по центру верхней половины, иначе - c нижней.
2) создать таблицу в которой ключевые слова книг превращены в числа и используются как айди строки в которой лежит книга. К примеру, если ключевое слово состоит из маленьких букв русского алфавита, то его можно считать числом записанным в 33-тичной системе счисления. Такое число можно переписать в привычной десятичной системе, тем самым сразу получив айди строки в которой лежит книжка.

Все же у меня в этом мало опыта, я не очень представляю себе как делается нормальный поиск (который не по точному совпадению).
Надеюсь кто-нибудь посоветует чего:3
...
Рейтинг: 0 / 0
04.05.2017, 23:37
    #39449056
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умный поиск по большой таблице mysql
...
Рейтинг: 0 / 0
04.05.2017, 23:45
    #39449059
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умный поиск по большой таблице mysql
yuriy475,

Вам же, наверное, и морфология нужна?
Sphinx
...
Рейтинг: 0 / 0
04.05.2017, 23:53
    #39449061
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умный поиск по большой таблице mysql
yuriy475,
поставь версию 5.7 и будет счастье
в 10 000 000 поиск с like 4сек
...
Рейтинг: 0 / 0
06.05.2017, 14:04
    #39449752
yuriy475
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умный поиск по большой таблице mysql
Akina, спасибо, то что нужно!
Буду эту штуку использовать. Жаль только что не исправляет ошибки в словах :c
...
Рейтинг: 0 / 0
10.05.2017, 19:43
    #39450986
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умный поиск по большой таблице mysql
автор Жаль только что не исправляет ошибки в словах :c

https://github.com/adriannuta/SphinxAutocompleteExample
...
Рейтинг: 0 / 0
11.05.2017, 09:57
    #39451140
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Умный поиск по большой таблице mysql
По поводу ускорения поиска есть две идеи:
1) создать таблицу в которой ключевые слова книг расположены в алфавитном порядке. Получая запрос сравнить его с центральной строкой таблицы если запрос выше по алфавиту, то сравнить со строкой что по центру верхней половины, иначе - c нижней.

Да проще все, мастер/детейл книга/ключевые слова, и индекс на слово. будет быстро.


2) создать таблицу в которой ключевые слова книг превращены в числа и используются как айди строки в которой лежит книга. К примеру, если ключевое слово состоит из маленьких букв русского алфавита, то его можно считать числом записанным в 33-тичной системе счисления. Такое число можно переписать в привычной десятичной системе, тем самым сразу получив айди строки в которой лежит книжка.


это бессмысленно.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Умный поиск по большой таблице mysql / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]