Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Поисковый запрос
sforce  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 43128
На форуме: 5 месяцев, 8 дней
Карма:




Здравствуйте, товарищи.
Ситуация такая. Хочу сделать поиск ко каталогу продукции. К примеру человек ищет деталь с названием "АБВГД-73В-15-А". Но в базе она называется "АБВГД-73-В 15А". Так вот, деталь одна и та же, но если искать обычным LIKE%...% то ничего не найдется.
Я решил выйти из положения следующим образом, но потом подумал реально ли это)
Допустим А это ячейка строки в базе, Б - поисковый запрос. И в поиске (SQL-запросе) я буду сравнивать не А и Б, а:
НЕКАЯ_ФУНКЦИЯ_УБИРАЮЩАЯ_ПРОБЕЛЫ_И_ДЕФИСЫ(А)
и
НЕКАЯ_ФУНКЦИЯ_УБИРАЮЩАЯ_ПРОБЕЛЫ_И_ДЕФИСЫ(Б)
Тогда:
"АБВГД-73В-15-А"
и
"АБВГД-73-В 15А"
станут одним и тем же.
Скажите, реально ли это сделать, и если да, то как. Заранее спасибо.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 8 дней
Карма: 21




Т.е. Вы хотите тащить все записи из базы, конвертировать их *(убирать пробелы и дефисы), затем конвертировать запрос,а потом их сравнивать? Ведь есть например полнотекстовый поиск может,лучше воспользоваться им?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4258
Пользователь №: 29002
На форуме: 5 лет, 4 месяца, 4 дня
Карма: 147




ну одно из возможный решений, конечно. но надо понимать, что это накладывает ограничение на формат названия. т.е.
1. наверняка оно будет состоять только из букв, цифр, минусов и пробелов.
2. названия не могут являться различными, только исходя из расположения минусов и пробелов. например: вдруг А1 и А-1 - это совершенно разные детали? хотя второй пункт в общем-то для поисковой выдачи не так критичен как первый.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sforce  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 43128
На форуме: 5 месяцев, 8 дней
Карма:




Цитата
Т.е. Вы хотите тащить все записи из базы, конвертировать их *(убирать пробелы и дефисы), затем конвертировать запрос,а потом их сравнивать? Ведь есть например полнотекстовый поиск может,лучше воспользоваться им?

Я так понял, что для работоспособности запроса должен существовать индекс таблицы товаров с типом FULLTEXT, но таково нет, и доступа к изменению базы я не имею.

Цитата
ну одно из возможный решений, конечно. но надо понимать, что это накладывает ограничение на формат названия. т.е.
1. наверняка оно будет состоять только из букв, цифр, минусов и пробелов.

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

Цитата
2. названия не могут являться различными, только исходя из расположения минусов и пробелов. например: вдруг А1 и А-1 - это совершенно разные детали?

Это очень маловероятно.

В итоге, мне придется делать количество SQL-запросов равное кол-ву строк в базе? Это не слишком сильная нагрузка? Строк порядка 50000.

Это сообщение отредактировал sforce - 26.06.2016 - 14:05
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4258
Пользователь №: 29002
На форуме: 5 лет, 4 месяца, 4 дня
Карма: 147




Цитата (sforce @ 26.06.2016 - 15:03)
В итоге, мне придется делать количество SQL-запросов равное кол-ву строк в базе?

откуда такой вывод?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22689
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 27 дней
Карма: 599




sforce
Нарушаем нормальную форму, создаём ещё 1 поле, которое содержит эту же строку без лишних разделительных символов. Далее поиск делать по этому полю и получишь результат. Конечно если тут не стоит у тебя задача исправлять ошибки пользователя и находить "похожие" результаты.
А вот, к примеру, если хочешь поиск делать с ошибками, тебе подойдет своя голова или что-то вроде https://habrahabr.ru/company/sphinx/blog/61807/


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса