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 году.)