Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Fulltext Search / 11 сообщений из 11, страница 1 из 1
24.02.2015, 10:43:11
    #38886842
Borodatych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
Доброго времени суток.

Позвольте несколько вопросов...

I.
Условие (такого номера заведомо нет):
Код: sql
1.
WHERE MATCH (`detail_no`) AGAINST ('+406 +1003050 +11' IN BOOLEAN MODE)


Ответ:
406-003050, 406-003050-00, 406-003050-01

Вроде все логично, но почему не вернулось пусто? Импровизация?!

II.
Условие (такого номера заведомо нет):
Код: sql
1.
WHERE MATCH (`detail_no`) AGAINST ('+406 +1003053 +01' IN BOOLEAN MODE)


Ответ:
1003053-101-0000, B30-1003053

Самое больше слово автоматически самое релевантное? (+импровизация)
...
Рейтинг: 0 / 0
24.02.2015, 10:51:28
    #38886854
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
Непонятен подход. Если требуется строгое соответствие - за каким фигом полнотекст? Если это номера - за каким фигом в тексте, почему не формализовано?
...
Рейтинг: 0 / 0
24.02.2015, 10:53:33
    #38886856
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
AkinaЕсли это номера - за каким фигом в тексте, почему не формализовано?В данном случае, насколько я понимаю, термин "номера" - это из предметной области (артикулы запчастей). Технически это все-таки строки.
...
Рейтинг: 0 / 0
24.02.2015, 11:01:37
    #38886875
Borodatych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
AkinaНепонятен подход
Что бы при условии:
Код: sql
1.
WHERE MATCH (`detail_no`) AGAINST ('+406 +1003050' IN BOOLEAN MODE)


Получить ответ:
406-003050 , 406-003050 -00, 406-003050 -01
...
Рейтинг: 0 / 0
24.02.2015, 11:25:38
    #38886915
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
miksoftТехнически это все-таки строки.Технически это упорядоченные группы идентификационных номеров. Массивы, если угодно. Просто в текстовом виде они представляются строками - так человеку удобнее смотреть. Но это не значит, что следует при хранении данных идти на поводу у удобства просмотра. Ибо результат такого прогиба мы как раз и видим у ТС, в полный рост...
...
Рейтинг: 0 / 0
24.02.2015, 12:03:01
    #38886992
Borodatych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
AkinaНо это не значит, что следует при хранении данных идти на поводу у удобства просмотра
Если не затруднит, поделитесь идеей как хранить в таком случае.

Но вопросы все же пока актуальны...
...
Рейтинг: 0 / 0
24.02.2015, 12:11:29
    #38887001
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
Borodatychподелитесь идеей как хранить в таком случае.
Как я уже сказал, полный номер является упорядоченной совокупностью формализованных характеристик. Выполните его формализацию на уровень хранения. Например, разделите полный номер на смысловые группы и храните каждую группу в своём поле. И, соответственно, поиск ведите только в поле с требуемым элементом. В продемонстрированном случае наполнения значение каждой смысловой группы является целочисленным, именно такой тип поля и следует использовать. При правильном индексировании запрос полетит.
А собрать требуемое текстовое представление номера для вывода на экран из формализованных частей - задача элементарная.
...
Рейтинг: 0 / 0
24.02.2015, 12:18:42
    #38887022
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
Я поступаю проще - храню две копии номера - с исходным форматированием и в преобразованном виде (т.е. без знаков-разделителей, в одном регистре, с заменой русских букв на аналогичные по написанию латинские, с заменой O->0,З->3, Ё->Е и т.п.). Поиск происходит простым LIKE-ом по второму значению, а визуально отображается первое.
...
Рейтинг: 0 / 0
24.02.2015, 12:20:26
    #38887024
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
Akinaполный номер является упорядоченной совокупностью формализованных характеристик. Выполните его формализацию на уровень хранения. Например, разделите полный номер на смысловые группы и храните каждую группу в своём поле. И, соответственно, поиск ведите только в поле с требуемым элементом.Если моя догадка, что это номера запчастей, верна, то это безнадежный путь. Наши сотрудники как-то задались целью собрать все форматы этих номеров. После 200 штук сдались.
...
Рейтинг: 0 / 0
24.02.2015, 13:16:54
    #38887116
Borodatych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
В общем полагаю, на первый вопрос ответ "Так и должно быть", на второй "Да"...

miksoftЕсли моя догадка, что это номера запчастей
Верна

Akina , miksoft , благодарю за идеи, гляну в эти направления.
...
Рейтинг: 0 / 0
07.05.2015, 13:54:51
    #38953555
Borodatych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fulltext Search
Доброго времени суток.

Вдруг кому пригодится.
В моем случае помогло обрамление в кавычки.

Условие (такого номера заведомо нет):
Код: sql
1.
2.
WHERE MATCH (`detail_no`) AGAINST ('"+406 +1003050 +11"' IN BOOLEAN MODE)
WHERE MATCH (`detail_no`) AGAINST ('"+406 +1003053 +01"' IN BOOLEAN MODE)


Ответ: пусто


Условие:
Код: sql
1.
WHERE MATCH (`detail_no`) AGAINST ('"+406 +1003050"' IN BOOLEAN MODE)


Ответ: 406-003050, 406-003050-00, 406-003050-01


Мне кажется плюсики лишние?! И как то оно на LIKE похоже стало...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Fulltext Search / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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