SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.07.2011 07:12:40

verybadbug
Участник
Зарегистрирован: 17.02.2010
Сообщений: 11

MATCH AGAINST

Есть вопрос к специалистам.
Как одновременно использовать кавычки (для использования - в поиске) и звездочку
Что-то вроде SELECT FROM `table` WHERE MATCH (`field`) AGAINST ('+"8-924"*' IN BOOLEAN MODE)

Заранее благодарен

Отредактированно verybadbug (28.07.2011 07:13:09)

Неактивен

 

#2 29.07.2011 00:20:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MATCH AGAINST

Если я правильно понимаю, то Вы хотите представить телефон в виде строки
для полнотекстового поиска, и кавычки Вам нужны для того, чтобы строки были
в правильном порядке. Так делать не следует smile Лучше фиксировать формат и
искать обычным LIKE с % в хвосте. Или даже записывать, как DECIMAL.

Почему не следует делать:
  1. Потому что такого формата, который Вы ищете, нет (чтобы еще и честно
ответить на Ваш вопрос)
  2. Потому что слово «8» короче, чем минимальная длина слова полнотексто-
вого поиска (а если уменьшить длину слова, оно станет стопсловом).
  3. Потому что 8-38-8-924.

Можно еще много придумать sad Полнотекстовый индекс предназначен для текстов,
а не для телефонов.

Неактивен

 

#3 29.07.2011 02:42:59

verybadbug
Участник
Зарегистрирован: 17.02.2010
Сообщений: 11

Re: MATCH AGAINST

Мне необходим поиск ПО ТЕКСТУ (слово может находиться в середине текста), в котором встречаются слова, написанные через "-" (номера телефонов например, фамилии, названия и много другого). Если делать при помощи LIKE, то '%что-то-там%' не есть хорошо, сами знаете почему.
Спросил про телефоны, потому что с остальным вопросов не возникает.

Менять исходники mysql и файлы настроек (дабы изменить "-" на другой символ) - не предлагать.

Неактивен

 

#4 29.07.2011 04:27:12

verybadbug
Участник
Зарегистрирован: 17.02.2010
Сообщений: 11

Re: MATCH AGAINST

Пробовал заменить "-" на "#"
SET GLOBAL `ft_boolean_syntax`='+ #><()~*:""&|'
почему-то тоже не помогает, хотя переменная ft_boolean_syntax изменяется. Есть какие-нибудь идеи?

Неактивен

 

#5 29.07.2011 08:56:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MATCH AGAINST

ft_boolean_syntax — это всего лишь отображение операторов в команде
(т.е. теперь вместо -blah у Вас будет работать #blah), но повлиять на то,
чтобы «-» считался буквой Вы так не сможете.

Боюсь, что в этом случае у Вас только два пути:
1. Делать отдельную табличку (колонку?), в которую записывать найден-
ные телефоны при добавлении новых строк. Эдакий своеобразный теле-
фонный индекс.
2. Второй способ Вы просили не предлагать smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson