FREETEXTTABLE всегда имеет ранг 0

Я использую SQLServer 2008, и если я выполняю следующий запрос:

SELECT 
  *
FROM
  FREETEXTTABLE(SomeTable, Name, 'a name that I know exists')

Я получаю строки, которые я ожидал, но ранг всегда равен 0.

В поисках решения этой проблемы я нашел этот вопрос на форуме Microsoft ASP.NET и, конечно же, добавлю:

ALTER FULLTEXT CATALOG MyCatalog REBUILD

Я начинаю получать звание - но только временно.

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

2 ответа

Решение

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

Я работаю над тем же вопросом, и в настоящее время принятый ответ не является для меня решением.

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

Для меня есть ошибка в freetexttable рейтинг. (Ошибка, которая не влияет containstable Рейтинг: Я сам проверил это с моим собственным каталогом с ошибками, и это также написано в этом сообщении на форуме Microsoft.)

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

Итак, вот мой ответ, взятый от Павла Валенты на еще одном посте на форуме Microsoft:

Если в вашем реальном каталоге не будет проиндексировано более нескольких сотен строк, добавьте в каталог некоторую фиктивную таблицу, чтобы индексировать больше строк.

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

Последнее замечание: у меня была эта проблема с sql 2005 sp4, не тестировалась с 2008 года. (Вопрос к 2008 году.)

Другие вопросы по тегам