MySQL полный текстовый поиск с нулевыми столбцами - PullRequest
0 голосов
/ 16 апреля 2009

Я пытаюсь получить полнотекстовый поиск в базе данных mysql. Проблема в том, что некоторые поля можно оставить пустыми. Например, у меня есть базовая таблица адресов со столбцами

StreetLine1

StreetLine2

Город

Государство

Zip

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

SELECT *, 
(MATCH (StreetLine1, StreetLine2, City, State, Zip) 
AGAINST ('+{0}*' IN BOOLEAN MODE)) AS Relevance 
FROM Address 
HAVING Relevance > 0 
Order By Relevance Desc

{0} это просто заполнитель

Если ни одно из полей не является нулевым, оно прекрасно работает. Но если один из них равен нулю, строка не возвращается.

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

Есть предложения?

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

Эти поля слишком далеко для полнотекстового поиска, чтобы быть тем, что вы хотите сделать. Кроме того, вы должны сделать свои таблицы MyIsam, который, как правило, менее подходит, чем InnoDb.

Здесь вы хотите использовать оператор LIKE.

0 голосов
/ 19 апреля 2009

Убедитесь, что у вас под [mysqld] в вашем my.cnf установлен параметр ниже значения по умолчанию 4, если вы пытаетесь сопоставить такие вещи, как номера улиц или сокращения, такие как 'Ln', и т. Д .:

ft_min_word_len=2

Я использовал это для географических данных, где пользователи хотят искать двухбуквенные сокращения штата и т. Д. - это дезориентирует, когда вы впервые понимаете, что короткие слова отсутствуют в индексе. Конечно, вам нужно перестроить индексы после изменения значения ft_min_word_len.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...