Как сделать FREETEXTTABLE для нескольких столбцов и нескольких терминов с ранжированием? - PullRequest
0 голосов
/ 11 июля 2011

У меня есть таблица клиента, подобная этой:

ID *, Название, Имя, Отчество, Фамилия, Имя компании

Все строковые поля могут иметь значение NULL.

Iнужно уметь предлагать пользователю нечеткий поиск.Так, например, они могли ввести следующие поиски, и это вернуло бы ранжированные результаты:

"BOB" "BOB JONES" "BOB JONES" "MR JONES" "BOB DAVE JONES" "BD JONES""BOB JONES ACME CORP" "ACME CORP" "ACME BOB" и т. Д.

Моя проблема в том, что, похоже, нет способа сделать совпадения с подстановочными знаками / LIKE%.Поэтому, если есть фамилия «JONESY», поиск «JONES» не соответствует ей.

В идеальном мире я хотел бы СОБЛЮДИТЬ все строковые столбцы в один столбец, а затем выполнить моинечеткий поиск по этому поводу, потому что ранжирование было бы лучше.

Кто-нибудь может сказать мне, как выполнять поиск с использованием подстановочных знаков или поиск по СОБЛЮДЕННЫМ полям?

Спасибо,

Саймон

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Вы можете определить полнотекстовый индекс SQL Server для нескольких столбцов в таблице.

Полнотекстовые запросы к такой таблице могут указывать столбец для запроса или запрос ко всем столбцам одновременно.

Полнотекстовый поиск не поддерживает истинное сопоставление с подстановочными знаками, но поддерживает сопоставление префиксов.Это означает, что вы можете искать «JONES *», и он будет соответствовать «JONESON» или «JONESY».

Использование FREETEXTTABLE обеспечит ранг для ваших результатов.

Соответствие префикса для «JONES"будет выглядеть так:

SELECT
    t.QueryContent
    , ft.[Key]
    , ft.[Rank]
FROM
    Table t
    LEFT OUTER JOIN CONTAINSTABLE ( Table , * , '"JONES*"' ) ft ON ( t.TableID = ft.[Key] )
ORDER BY
    ft.Rank DESC
    , t.QueryContent
0 голосов
/ 12 июля 2011

Я тоже делал такой поиск. вот ссылка, которая помогла мне

http://www.codeproject.com/KB/database/SQLServer2K8FullTextSearh.aspx

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