2016-06-10 2 views
1

У меня проблема. Я создаю функциональные возможности продуктов, основанные на подкатегориях продуктов. Предположим, у меня есть такие подкатегории, какАлгоритм поиска MySQL для лучшего соответствия

Случай 1 (если у меня есть 2 слова)

  1. TV имеет 1 продукты
  2. Samsung TV имеет 1 продукты
  3. Samsung холодильник имеет 1 продукт
  4. Samsung холодильник имеет 1 продукт

Что я хочу, если я вхожу Samsung TV, тогда я хочу продукты от TV или Samsung TV, но не от Samsung refrigerator или Samsung fridge. то, что я попробовал это

select * from tabel name where title like "%Samsung TV%" or title like "%Samsung" or title like "%TV" 

случай 1 ПРОБЛЕМА

также выбрать продукты из Samsung холодильник и Samsung холодильник

Случай 2 (когда слова больше, чем 2)

  1. Samsung стиральная машина имеет 1 продуктов
  2. Tata стиральная машина имеет 1 продукты
  3. промывочное устройство Samsung имеет 1 продукт
  4. стиральная машина имеет 1 продукт

Что я хочу, если я вхожу Samsung мойку машина. запрос я написал это

select * from tabel name where title like "%Samsung washing machine%" or title like "%Samsung washing%" or title like "%washing machine%" 

случай 2 ПРОБЛЕМА

До сих пор никаких проблем, но лучшее решение не будет понятно. enter image description here огромное спасибо заранее.

+0

Взгляни на чарующем мире регулярных выражений – Strawberry

+1

Взгляните на полнотекстовые индексы – Yann39

+0

полный текстовый индекс выберет все подходящие элементы. что вы думаете @ Yann39 – MKD

ответ

0

Вы можете попробовать что-то вроде этого: -

select * from department where Name like "%Samsung" or (Name like "%Tv%" and Name like "%Samsung%") UNION select from department where Name like "%tv" or (Name like "%Samsung%" and Name like "%TV%") 

Надеется, что это будет полезно

+2

спасибо, чувак. работает . – MKD

0

лучше использовать только и

select * from tabel name where title like "%TV" or (title like "%Samsung%" and title like "%TV%") 
+0

, но если я добавлю «велосипедные виды спорта», то в соответствии с этим запросом он выберет все спортивные предметы из «спортивной обуви» или «предметов спорта» и т. Д. – MKD

+0

, если запрос выбирается * из названия табуляции, где (название типа «% bikes% »и название типа«% sports% »), то нет – monterico

+0

, тогда этот запрос не будет выбирать продукты из подкатегории« велосипеды » – MKD

Смежные вопросы