Функция SQL CONTAINS () не возвращает ожидаемых результатов? - PullRequest
0 голосов
/ 21 марта 2012

У меня есть таблица «Актив» со столбцом «AssetDescription».В каждом ряду есть группа слов / предложений, разделенных запятой.

row1: - цветы, полноцветные, женские, Trend

row2: - пахнущие цветы, сердце

Теперь, если я добавлю поисковый запрос, например: -

select * from Asset where contains(AssetDescription,'flower')

Он ничего не возвращает.

У меня есть еще одна таблица 'SearchData' со столбцом 'SearchCol', имеющий строки, аналогичные указанным выше в таблице «Актив».

Теперь, если поставить поисковый запрос, например: -

select * from SearchData where contains(SearchCol,'flower')

Возвращает обе строки.

ВОПРОС: -

  1. Почему первый запрос не возвращает никакого результата, а второй работает правильно.
  2. Если в полнотекстовом поиске есть что-то дляделать с 1-м заданием, чем что делать в этом отношении.Поскольку я использую SQL Server 2000.

Устранение сомнений в комментариях по моему вопросу: -

  1. Таблица «SearchData» имеет более 100 000 строк и, таким образом, таблица «Актив».

  2. Эти две таблицы НЕ идентичны.Но у их соответствующих столбцов есть строки, которые содержат некоторую группу слов, разделенных запятыми.(Таким образом, в обоих столбцах много цветов, цветов и т. Д.)

Снимок экрана индексов обеих таблиц (Asset и SearchData): - enter image description here

Ответы [ 3 ]

2 голосов
/ 21 марта 2012

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

2 голосов
/ 21 марта 2012

Если вы прочитаете статью на СОДЕРЖИТ , вы увидите это при поиске

  • содержит (AssetDescription, 'цветок')

'цветок' трактуется как простой термин , который

соответствует точному слову или фразе

Однако для

  • содержит (AssetDescription, 'flower *')

'цветок' трактуется как префикс , который

указывает совпадение слов или фраз, начинающихся с указанного Текст

и будет соответствовать 'цветам' в ваших данных.

Итак, вы уверены, что данные в ваших двух таблицах одинаковы, или «Asset» содержит «flowers», а «SearchData» содержит «flower»?

0 голосов
/ 21 марта 2012

ПОЛУЧИЛ РЕШЕНИЕ.

СПАСИБО ВСЕМ и особенно DIEGO за поддержку.

Чтобы позволить ПОЛНОМУ ПОИСКУ ТЕКСТА (FTS) работать должным образом: -

  1. Включить FTS для требуемой таблицы.
  2. Включить FTS для необходимого столбца в этой таблице.
  3. Откройте свойства для той же таблицы и проверьте, включены ли атрибуты «Полнотекстовое отслеживание изменений» и «Полнотекстовый индекс обновления». Если нет, включите их.

DONE. :)

...