FREETEXTTABLE всегда имеет ранг 0 - PullRequest
6 голосов
/ 23 июня 2010

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

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

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

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

ALTER FULLTEXT CATALOG MyCatalog REBUILD

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

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

Ответы [ 2 ]

3 голосов
/ 24 сентября 2012

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

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

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

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

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

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

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

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

1 голос
/ 23 июня 2010

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

...