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

Откуда:
Сообщений: 41
Что-то не пойму как обрабатывается точка в запросе с CONTAINSTABLE.

Например, фраза ' "1.1" ' найдет только результаты, в которых есть "1.1"
В то же время, ' "mr.n*" ' найдет: "Mr.Nobody", "Mr. Nice", "Mr 73" - т.е. тут аналогично ' "mr n*" '

Но если в первом запросе точку заменить пробелом, ' "1 1" ', то найдутся "1-1", "1(1", "1+1" и т.п., а "1.1" уже не найдет.

Точка с цифрами по-другому как-то себя ведет?
Просто пишу парсер юзерской строки поиска и не пойму как обрабатывать точку.
30 авг 15, 12:51    [18088112]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
DeviLooper
Member

Откуда:
Сообщений: 41
Кстати, почему находит "Mr 73" по ' "mr.n*" ' я так и не въехал...
30 авг 15, 12:56    [18088117]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
DeviLooper
Кстати, почему находит "Mr 73" по ' "mr.n*" ' я так и не въехал...


К сообщению приложен файл. Размер - 67Kb
30 авг 15, 14:30    [18088282]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
DeviLooper
Точка в CONTAINSTABLE: как работает


Зависит от wordbreaker'а языка, который используется при:

a) индексировании
б) при разборе фразы поиска.
30 авг 15, 14:31    [18088285]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
вот эта запись "mr.n*" в данном случае разбивается word breaker'ом для языка English (у меня такой язык задан lcid=1033) на mr и n, и искать будет не mr.n*, а mr*n*. (такая особенность English word breaker'a заменять Mr. на Mr, Mrs. на Mrs)

вот такая запись "mr*.n*", при тех же условиях будет разбита на 3:
1) mr
2) End Of Sentence
3) n

искать так и будет mr*.n*
30 авг 15, 14:41    [18088310]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
DeviLooper
Member

Откуда:
Сообщений: 41
А что такое "nn" ?
Я думал какой-то управляющий код, а выходит это просто символы?
30 авг 15, 14:46    [18088325]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
DeviLooper
А что такое "nn" ?
Я думал какой-то управляющий код, а выходит это просто символы?


да
30 авг 15, 14:57    [18088342]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
DeviLooper
Member

Откуда:
Сообщений: 41
просто символы

Бред какой-то. Что за нано-логика? Нафига тут эти nn?

А "Exact Match" разве не означает "Точное совпадение"? Почему тогда ищет по звездочке?
30 авг 15, 15:04    [18088365]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
DeviLooper
просто символы

Бред какой-то. Что за нано-логика? Нафига тут эти nn?

А "Exact Match" разве не означает "Точное совпадение"? Почему тогда ищет по звездочке?


бред не бред, а вам с этой реализацией жить.
30 авг 15, 15:14    [18088397]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
DeviLooper
Member

Откуда:
Сообщений: 41
Просто я не пойму чем это обусловлено.
Есть где почитать про эти "nn" ?
30 авг 15, 15:20    [18088410]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
DeviLooper
Member

Откуда:
Сообщений: 41
хм...

автор
'nn' is an internal representation for numeric values
30 авг 15, 15:25    [18088419]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
DeviLooper
просто символы

Бред какой-то. Что за нано-логика? Нафига тут эти nn?

А "Exact Match" разве не означает "Точное совпадение"? Почему тогда ищет по звездочке?


это внимательно перечитайте 18088310

и это

https://msdn.microsoft.com/en-us/library/ms187787.aspx
<prefix_term>

Specifies a match of words or phrases beginning with the specified text. Enclose a prefix term in double quotation marks ("") and add an asterisk (*) before the ending quotation mark, so that all text starting with the simple term specified before the asterisk is matched. The clause should be specified this way: CONTAINS (column, '"text*"'). The asterisk matches zero, one, or more characters (of the root word or words in the word or phrase). If the text and asterisk are not delimited by double quotation marks, so the predicate reads CONTAINS (column, 'text*'), full-text search considers the asterisk as a character and searches for exact matches to text*. The full-text engine will not find words with the asterisk (*) character because word breakers typically ignore such characters.

When <prefix_term> is a phrase, each word contained in the phrase is considered to be a separate prefix. Therefore, a query specifying a prefix term of "local wine*" matches any rows with the text of "local winery", "locally wined and dined", and so on.
30 авг 15, 15:31    [18088432]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
DeviLooper
хм...

автор
'nn' is an internal representation for numeric values


This indexing scheme helps maintain con-
sistency with other Microsoft search products that index numbers, to allow you to
perform value-based searches on them. In other Microsoft search products, you could
search for Word documents with a page count property greater than 100 pages. In SQL
Server, all indexed properties are treated as strings in your searches.
30 авг 15, 15:32    [18088435]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
DeviLooper
Member

Откуда:
Сообщений: 41
А отключить эти nn при индексировании как-нибудь можно? Чтобы не добавлялись.
30 авг 15, 15:41    [18088450]     Ответить | Цитировать Сообщить модератору
 Re: Точка в CONTAINSTABLE: как работает?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
DeviLooper
А отключить эти nn при индексировании как-нибудь можно? Чтобы не добавлялись.


не
30 авг 15, 16:32    [18088542]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить