none
Ранжирование в полнотекстовом поиске RRS feed

  • Вопрос

  • Добрый день.

    Подскажите, пожалуйста, как работает ранжирование результатов полнотекстового поиска?

    Создала простую табличку для примера, в которой поле Key - полнотекстовый индекс, поле Name - текстовое поле для поиска.

    CREATE TABLE [dbo].[TBL_SEARCH](

         [KEY] [int] NOT NULL,

         [NAME] [nvarchar](255) NULL,

    CONSTRAINT [TBL_SEARCH_INDEX] PRIMARY KEY CLUSTERED

    (

         [KEY] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

    заполнила ее тестовыми данными:

    insert into TBL_SEARCH values (1, 'Мягкова')

    insert into TBL_SEARCH values (2, 'машина')

    insert into TBL_SEARCH values (3, 'мужчина')

    insert into TBL_SEARCH values (4, 'малинка')

    insert into TBL_SEARCH values (5, 'машинка')

    выполняю запрос №1 к таблице:

    SELECT TBL_SEARCH.[key], TBL_SEARCH.[Name ], KEY_TBL.[rank]

      FROM TBL_SEARCH

         INNER JOIN

         freetexttable (TBL_SEARCH, [NAME],'малинка мужчина') AS KEY_TBL

         ON TBL_SEARCH.[key] = KEY_TBL.[KEY]

    ORDER BY rank desc

    получаю результат:

    3

    мужчина

    53

    4

    малинка

    0

    выполняю запрос №2 к таблице:

    SELECT TBL_SEARCH.[key], TBL_SEARCH.[Name ], KEY_TBL.[rank]

      FROM TBL_SEARCH

         INNER JOIN

         freetexttable (TBL_SEARCH, [NAME],'машина мужчина') AS KEY_TBL

         ON TBL_SEARCH.[key] = KEY_TBL.[KEY]

    ORDER BY rank desc

    получаю результат:

    2

    машина

    53

    3

    мужчина

    0

    Вопрос в том, по какой логике проставляется ранг? Почему в первом запросе ранг "мужчина" получился выше ранга "малинка"? 

Ответы