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

Откуда:
Сообщений: 113
ms sql 2008 exspress
Полнотекстовый индекс для слова автостекол создает два разных keyword
Вернее из разных keyword получает одно идентичное display_term

keyword display_term count

0x043004320442043E044104420435043A043E043B автостекол 13
0x043004320442043E044104420435043A043E043B000002020202020213 автостекол 1

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

INSERT INTO slova.dbo.slova_v_bazax(slovo,kl)SELECT display_term,document_count FROM sys.dm_fts_index_keywords(db_id('gr'), object_id('t')) order by document_count desc


Это разовый глюк ? Или так и должно быть ?
1 авг 17, 16:15    [20692251]     Ответить | Цитировать Сообщить модератору
 Re: два идентичных слова - почему то индексируются по разному ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7392
sahard,

это разные слова, у второго в хвосте туча непечатного кода. Поэтому на экране выглядят одинаково.
1 авг 17, 16:28    [20692316]     Ответить | Цитировать Сообщить модератору
 Re: два идентичных слова - почему то индексируются по разному ?  [new]
sahard
Member

Откуда:
Сообщений: 113
Владислав Колосов,

Если бы.
Я же писал, что хотел создать уникальный индекс по этим словам.
Т.е. сам mssql проверял одинаковость текстового написания.
---
Похоже это не разовый глюк.
Наткнулся еще на два аналогичных случая с другими словами
1 авг 17, 16:34    [20692346]     Ответить | Цитировать Сообщить модератору
 Re: два идентичных слова - почему то индексируются по разному ?  [new]
sahard
Member

Откуда:
Сообщений: 113
Владислав Колосов
sahard,

это разные слова, у второго в хвосте туча непечатного кода. Поэтому на экране выглядят одинаково.


Вообщем много их :))
Видимо, когда идет разбивка по словам и создаются keyword - хвосты учитывает.
А когда из keyword создается display_term - хвосты откидываются.

И получается keyword с хвостами искаться не будут ?
Да уж....
1 авг 17, 16:45    [20692402]     Ответить | Цитировать Сообщить модератору
 Re: два идентичных слова - почему то индексируются по разному ?  [new]
sahard
Member

Откуда:
Сообщений: 113
sahard,

и дело может не в хвостах
Нашел одну особенность
в тексте, который индексируется есть два разных слова бельё и белье
и для них индексации получаются разные keyword. Что вполне логично
А вот потом уже из двух разных keyword sys.dm_fts_index_keywords_by_document выдают два одинаковое белье
1 авг 17, 18:17    [20692676]     Ответить | Цитировать Сообщить модератору
 Re: два идентичных слова - почему то индексируются по разному ?  [new]
sahard
Member

Откуда:
Сообщений: 113
sahard,
поправка
не sys.dm_fts_index_keywords_by_document
а sys.dm_fts_index_keywords выдает два одинаковое белье

а запрос
SELECT * FROM	sys.dm_fts_index_keywords_by_document (db_id('gr'), object_id('t')) WHERE  display_term like 'белье'


выдает и записи с белье и бельё
----
1 авг 17, 18:24    [20692696]     Ответить | Цитировать Сообщить модератору
 Re: два идентичных слова - почему то индексируются по разному ?  [new]
человек_ниоткуда
Guest
sahard,

Вообще пробельные символы в конце текстовой строки игнорируются.
https://support.microsoft.com/en-us/help/316626/inf-how-sql-server-compares-strings-with-trailing-spaces

Может у тебя такая ситуация.
1 авг 17, 20:53    [20692917]     Ответить | Цитировать Сообщить модератору
 Re: два идентичных слова - почему то индексируются по разному ?  [new]
sahard
Member

Откуда:
Сообщений: 113
человек_ниоткуда
sahard,

Вообще пробельные символы в конце текстовой строки игнорируются.
https://support.microsoft.com/en-us/help/316626/inf-how-sql-server-compares-strings-with-trailing-spaces

Может у тебя такая ситуация.


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

Т.е. парсер строк при создании индекса
sys.dm_fts_parser('query_string', lcid, stoplist_id, accent_sensitivity)
учитывает параметры, установленные в базе.

А функции
  sys.dm_fts_index_keywords
до этих установок нет никакого дела.

Просто, вот тот пример, что я выше приводил, слово бельё(е) встречается в начале строки
аналогично и со словом автосте(ё)кол
1 авг 17, 22:14    [20693061]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить