1 Отредактировано Евгений (15.01.2015 13:07:40)

Тема: Поиск по артикулу в полнотекстовом режиме

Например есть товар с названием "Радиатор основной Gerat TY-160/3R" для Toyota Surf. TY-160/3R так же является артикулом.
При поиске со словами Toyota Surf, товар находит, но при поиске TY-160/3R ничего нет.
Тип поиска like не совсем подходит т.к. по запросу Toyota Surf ничего не найдет.

Собственно можно ли включить артикул в полнотекстовый поиск?

2

Re: Поиск по артикулу в полнотекстовом режиме

Поиск в редискрипте устроен так - для каждого товара формируется длинная строка которая участвует в поиске (можно посмотреть в таблицу *_search_index), в которую входят: Название, Артикул, вся цепочка категорий, характеристики, краткое описание, мета-тег - ключевые слова.

Соответственно поиск по %like% - будет искать точное вхождение по всем вышеперечисленным полям и артикул там есть. Попробуйте создать один товар в админ. панели и указать у него артикул "TESTAAA" и произведите поиск по фразе "TESTAAA", товар должен найтись. Вы можете убедиться, что поиск по артикулам работает и на нашем demo сайте.

Не совсем понял, почему "Тип поиска like не совсем подходит".

Повысить оценку Понизить оценку

3

Re: Поиск по артикулу в полнотекстовом режиме

Я понял, вы переключили в полнотекстовый режим поиска и поэтому у вас не находится по артикулу.
Я объясню почему, это связано с ограничениями полнотекстового поиска.

Плюс полнотекстового поиска

  • поиск ведется по словам, поэтому они не обязательно должны находиться рядом. (ищем: "Диван красный", находим - "Диван замечательный красный")

  • допустимы неточные окончания(это реализуется нашими средствами) (ищем: "Диваны красные", находим "Диван замечательный красный")

Минусы:

  • В настройках к MySQL устанавливается минимальная длина слова, попадающего в индекс.
    Значением по умолчанию является - 4.  Соответственно в полнотекстовый поиск не попадают слова менее 4х символов.

  • Спецсимволы (не буквы и цифры), являются разделителями слов.

То есть "TY-160/3R" - не попадет в поисковый индекс, т.к. MySQL разбивает его на 3 слова:
1. TY
2. 160
3. 3R

Все эти слова менее 4х символов, соответственно они не попадают в полнотекстовый индекс.

В вашем случае возможно использовать только поиск по like, чтобы искать по идентификаторам типа TY-160/3R

Повысить оценку Понизить оценку

4 Отредактировано Евгений (15.01.2015 15:39:35)

Re: Поиск по артикулу в полнотекстовом режиме

Спасибо, я понял. К сожалению поиск like не найдет вообще ничего по запросу Toyota Surf neutral
Уж лучше полнотекстовый тогда стоит.

В настройках к MySQL устанавливается минимальная длина слова, попадающего в индекс.
Значением по умолчанию является - 4.  Соответственно в полнотекстовый поиск не попадают слова менее 4х символов.

Где можно изменить значение на 2?

5

Re: Поиск по артикулу в полнотекстовом режиме

Не понимаю, почему не найдет, у вас же фраза "Toyota Surf" присутствует в названии товара.
А наш like ищет по маске %фраза% простое вхождение строки.

Настроить минимальную длину индексируемого слова можно в конфигурационном файле MySQL переменная ft_min_word_len. http://www.mysql.ru/docs/man/SHOW_VARIABLES.html

Повысить оценку Понизить оценку

Re: Поиск по артикулу в полнотекстовом режиме

Ввожу Toyota - находит
Ввожу Surf - находит
Ввожу Toyota Surf - нет результатов.
Возможно из за того, что Toyota у меня название характеристики, а Surf находится в самом списке этой характеристики

7

Re: Поиск по артикулу в полнотекстовом режиме

Да, скорее всего именно из-за этого (что слова в индексе не встречаются именно в такой последовательности). Точно посмотреть всегда можно в таблице ..._search_index как составлен поисковый индекс для конкретного товара.

Вы можете обойти эту проблему, просто добавив точную фразу "Toyota Surf", например в ключевые слова товара, на вкладке мета-теги.

Повысить оценку Понизить оценку