Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Возможно ли такое организовать в Full Text Search?  [new]
Bobby
Member

Откуда:
Сообщений: 627
Всем доброго времени суток! Вопрос в следующем. Организован полнотекстовый поиск. Запрос строится динамически и имеет вид типа
SELECT <field>
FROM <table>
WHERE CONTAINS(<field>, ' FORMSOF (INFLECTIONAL, "Дядя Вася ") ')


Все отлично отрабатывает, словоформы от "Дядя Вася" отбираются влет. А можно ли как-нибудь организовать, чтоб по этой фразе отбирались и записи со значением типа "Дядя, которого зовут Вася", например, с определением, сколько слов может находиться между "Дядя" и "Вася"? Заранее огромная благодарность всем ответившим
9 сен 09, 22:33    [7639407]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Bobby
Member

Откуда:
Сообщений: 627
В какую сторону хоть копать??
10 сен 09, 09:28    [7640100]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Glory
Member

Откуда:
Сообщений: 104760
BOL - CONTAINS

NEAR | ~
Indicates that the word or phrase on the left side of the NEAR or ~ operator should be approximately close to the word or phrase on the right side of the NEAR or ~ operator. Multiple proximity terms can be chained, for example:

a NEAR b NEAR c


This means that word or phrase a should be near word or phrase b, which should be near word or phrase c. When several proximity terms are chained, all proximity terms must be near each other. So, in the example a ~ b ~ c, word or phrase a should also be near word or phrase c.


E. Using CONTAINS with <proximity_term>
The following example returns all product names that have the word bike near the word performance.

USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'bike NEAR performance');
GO
10 сен 09, 11:04    [7640640]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Bobby
Member

Откуда:
Сообщений: 627
Glory,
Это все понятно (a NEAR b NEAR c). Задача сводится у тому, что b не задано явно и может быть каким угодно. Вопрос в том, можно ли как-нибудь проанализировать это b
10 сен 09, 11:28    [7640849]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Bobby
Glory,
Это все понятно (a NEAR b NEAR c). Задача сводится у тому, что b не задано явно и может быть каким угодно. Вопрос в том, можно ли как-нибудь проанализировать это b

Как это не задано ? Разве а - это не Дядя, а b -это не Вася ?
10 сен 09, 11:29    [7640863]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Bobby
Member

Откуда:
Сообщений: 627
Glory
Bobby
Glory,
Это все понятно (a NEAR b NEAR c). Задача сводится у тому, что b не задано явно и может быть каким угодно. Вопрос в том, можно ли как-нибудь проанализировать это b

Как это не задано ? Разве а - это не Дядя, а b -это не Вася ?


а -- Дядя, с -- Вася, а b -- что угодно.
т.е., например, Дядя, которого, может быть, зовут Вася. В данном случае
b -- ", которого, может быть, зовут"
и этим b может быть что угодно. а задача в том, чтоб запись с такой фразой отобралась
10 сен 09, 11:35    [7640916]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Bobby
Glory
Bobby
Glory,
Это все понятно (a NEAR b NEAR c). Задача сводится у тому, что b не задано явно и может быть каким угодно. Вопрос в том, можно ли как-нибудь проанализировать это b

Как это не задано ? Разве а - это не Дядя, а b -это не Вася ?


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

И что дальше то ? В чем проблема то ?

SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'Дядя NEAR Вася');
10 сен 09, 11:39    [7640949]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Цитата MSDN:
"Пользователь не может повлиять на то, будут ли считаться два выражения или фразы расположенными близко друг к другу, это вычисляется внутренним образом. При вычислении близости учитывается много точек данных.
Данный тип запроса также возвращает документы или строки, содержащие искомые термины, даже если они находятся далеко друг от друга. Данные результаты будут обладать нулевым рейтингом (0). "

Т.е. теоретически можно получить всё и далее отобрать "по количеству слов между искомыми словами"...
--------------------------------------------------------------
Дьявол кроется в деталях.
10 сен 09, 11:43    [7640991]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Bobby
Member

Откуда:
Сообщений: 627
Glory,
а словоформы при этом учтутся? тут нужно смесь из NEAR и FORMSOF как-то придумать
10 сен 09, 11:45    [7641001]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Bobby
Glory,
а словоформы при этом учтутся? тут нужно смесь из NEAR и FORMSOF как-то придумать

И чтобы еще на пивом бегал ?
10 сен 09, 11:46    [7641005]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли такое организовать в Full Text Search?  [new]
Bobby
Member

Откуда:
Сообщений: 627
Дедушка,
А есть-ли стандартные методы узнавания "количества слов между искомыми словами"? извиняюсь за, может быть, тупые вопросы. Только начинаю ковырять FTS.
10 сен 09, 11:50    [7641038]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить