powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация поискового запроса
7 сообщений из 7, страница 1 из 1
Оптимизация поискового запроса
    #39232469
Himu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!
Подскажите пожалуйста как можно оптимизировать запроса поиска на сайте.
На сайте имеется продукция с различным обозначением/наименованием, название товаров может состоять из одного слова, а может состоять из нескольких + аббревиатуры различные. Позиций примерно 80 000, продолжает расти, но время для поиска неоправданно большое...

Пример поисковой строки ВП 13х14 или Арматура 21А 34 С

Получается, что если ввести Арматура 34 , то вывестись должна и Арматура 21А 34 С , или если ввести 21А С, то Арматура так же должна попасть в результат выборки.

В настоящий момент не придумал ничего лучше, чем разбивать строку по пробелу, генерировать ВСЕ возможные варианты сочетаний частей и подставлять все условия через LIKE

например: ввели в строку поиска чайник электро вамп , на выходе получим что-то типа:

Код: sql
1.
SELECT name FROM items WHERE name LIKE 'чайник электро вамп' OR name LIKE 'вамп чайник электро' OR name LIKE 'вамп электро чайник'.... и т.д.



Проблема еще усложняется тем фактом, что в названии могут быть символы *, / - и т.д.

Подскажите пожалуйста, как можно это все оптимизировать. Задумывался даже о регулярках, и даже реализовывал вариант с ними, но эффекта никакого не было
...
Рейтинг: 0 / 0
Оптимизация поискового запроса
    #39232529
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Himu,

такая строка
чайник электро вамп
должна приводиться к к такому

Код: sql
1.
SELECT `name` FROM items WHERE `name` LIKE '%чайник%' and `name` LIKE '%электро%'  and `name` LIKE '%вамп%'



что позволит для поиска использовать набор
чай эл вам

и надо учесть что name зарезервированное слово
...
Рейтинг: 0 / 0
Оптимизация поискового запроса
    #39232696
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рассмотрите варианты полнотекста и внешнего искателя.
...
Рейтинг: 0 / 0
Оптимизация поискового запроса
    #39232901
Посмотрите в сторону сфинкса - http://sphinxsearch.com/
...
Рейтинг: 0 / 0
Оптимизация поискового запроса
    #39233009
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HimuПриветствую!
Подскажите пожалуйста как можно оптимизировать запроса поиска на сайте.
На сайте имеется продукция с различным обозначением/наименованием, название товаров может состоять из одного слова, а может состоять из нескольких + аббревиатуры различные. Позиций примерно 80 000, продолжает расти, но время для поиска неоправданно большое...

Пример поисковой строки ВП 13х14 или Арматура 21А 34 С

Получается, что если ввести Арматура 34 , то вывестись должна и Арматура 21А 34 С , или если ввести 21А С, то Арматура так же должна попасть в результат выборки.

В настоящий момент не придумал ничего лучше, чем разбивать строку по пробелу, генерировать ВСЕ возможные варианты сочетаний частей и подставлять все условия через LIKE

например: ввели в строку поиска чайник электро вамп , на выходе получим что-то типа:

Код: sql
1.
SELECT name FROM items WHERE name LIKE 'чайник электро вамп' OR name LIKE 'вамп чайник электро' OR name LIKE 'вамп электро чайник'.... и т.д.



Проблема еще усложняется тем фактом, что в названии могут быть символы *, / - и т.д.

Подскажите пожалуйста, как можно это все оптимизировать. Задумывался даже о регулярках, и даже реализовывал вариант с ними, но эффекта никакого не было

Создать индекс на поле name.

> Проблема еще усложняется тем фактом, что в названии могут быть символы *, / - и т.д.

Это не оптимизируется. 100 тысяч уже достаточно большая таблица, так что искать по ней без индекса будет сложно.
Также можно подумать о полнотекстовом индексе и поиске по этому полю с помощью него.

Поскольку вопрос поставлен очень расплывчато, больше ничего не сказать.
...
Рейтинг: 0 / 0
Оптимизация поискового запроса
    #39233010
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяHimu,

такая строка
чайник электро вамп
должна приводиться к к такому

Код: sql
1.
SELECT `name` FROM items WHERE `name` LIKE '%чайник%' and `name` LIKE '%электро%'  and `name` LIKE '%вамп%'



что позволит для поиска использовать набор
чай эл вам

и надо учесть что name зарезервированное слово

Но не позволит использовать индекс.
А если так, то совет бесполезен.

Автору нужно разобраться в первую очередь с постановкой задачи и решить, что же ему нужно искать, и как.
...
Рейтинг: 0 / 0
Оптимизация поискового запроса
    #39233013
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полнотекстовый поиск просится. Либо встроенный (рекомендую последние версии MySQL чтобы это было на InnoDB), либо внешний типа Sphynx или Solar или Elastic search.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация поискового запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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