2008-11-21 5 views
1

У меня есть таблица с столбцом TEXT, где содержимое представляет собой просто строки CSV-номеров. Пример ", 1,76,77,115," Каждая строка может иметь произвольное количество чисел.Полный текст Поиск одиночных символов

Я пытаюсь настроить индексирование полного текста, чтобы быстро найти этот столбец. Это отлично работает. Вместо выполнения запросов с

where MY_COL LIKE '%,77,%' and MY_COL LIKE '%,115,%' 

я могу сделать

where CONTAINS(MY_COL,'77 and 115') 

Однако, когда я пытаюсь искать для одного символа он не работает.

where CONTAINS(MY_COL,'1') 

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

ответ

2

Работа с реляционными базами данных так будет больно.

Используйте правильную схему. Либо сохраните значения в разных строках, либо используйте тип данных массива для столбца.

Это позволит решить проблему тривиально.

+0

Согласен, это то, что я хотел бы сделать. Это «оптимизация» уже нормированной схемы для реализации «общей» функции поиска ... * bangs head into desk * – galuvian 2009-01-08 03:47:54

0

Я исправил свою проблему, хотя я не совсем уверен, что исправил ее.

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

0

Согласен. Как 12,15,33 не возвращают эту запись для поиска 1 с полным текстом? Для достижения этой цели используйте фактическую схему таблицы.