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

Откуда: Ставрополь
Сообщений: 71
Доброго времени суток.
Вопрос. Пытаюсь Добавить full-text search.

Имеется таблица

CREATE TABLE [dbo].[UserInfoData_FIO](
	[Id] [uniqueidentifier] NOT NULL,
	[UserInfoId] [uniqueidentifier] NOT NULL,
	[_Modify] [datetime] NOT NULL,
	[SystemUserId] [nvarchar](450) NOT NULL,
	[Rating] [smallint] NULL,
	[Value] [nvarchar](400) NOT NULL,
 CONSTRAINT [PK_UserInfoData_FIO] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


Добавлен каталог

CREATE FULLTEXT CATALOG [UserInfoData_FIO]WITH ACCENT_SENSITIVITY = ON

GO



В данном каталоге выбрана нужная таблица UserInfoData_FIO в качестве поля выбрано поле Value


В таблице UserInfoData_FIO в поле Value лежит значение равное 1

Далее делаю выборку

SELECT TOP 10 * FROM [dbo].[UserInfoData_Country] as country WHERE  CONTAINS (country.Value, '1')


Но результата нет. Вопрос что надо изменить что бы выполнялся корректный поиск

Заранее Благодарен
5 мар 19, 11:27    [21825173]     Ответить | Цитировать Сообщить модератору
 Re: full-text search - Поиск по значению  [new]
Dzianis
Member

Откуда:
Сообщений: 71
нет ли ошибки?
таблица UserInfoData_FIO
поиск же по UserInfoData_Country
5 мар 19, 14:55    [21825443]     Ответить | Цитировать Сообщить модератору
 Re: full-text search - Поиск по значению  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2581
AneP
Доброго времени суток.
Вопрос. Пытаюсь Добавить full-text search.

Имеется таблица

CREATE TABLE [dbo].[UserInfoData_FIO](
	[Id] [uniqueidentifier] NOT NULL,
	[UserInfoId] [uniqueidentifier] NOT NULL,
	[_Modify] [datetime] NOT NULL,
	[SystemUserId] [nvarchar](450) NOT NULL,
	[Rating] [smallint] NULL,
	[Value] [nvarchar](400) NOT NULL,
 CONSTRAINT [PK_UserInfoData_FIO] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


Добавлен каталог

CREATE FULLTEXT CATALOG [UserInfoData_FIO]WITH ACCENT_SENSITIVITY = ON

GO



В данном каталоге выбрана нужная таблица UserInfoData_FIO в качестве поля выбрано поле Value


В таблице UserInfoData_FIO в поле Value лежит значение равное 1

Далее делаю выборку

SELECT TOP 10 * FROM [dbo].[UserInfoData_Country] as country WHERE  CONTAINS (country.Value, '1')


Но результата нет. Вопрос что надо изменить что бы выполнялся корректный поиск

Заранее Благодарен


Full-text index по нужному полю создан и добавлен в каталог?
5 мар 19, 15:37    [21825485]     Ответить | Цитировать Сообщить модератору
 Re: full-text search - Поиск по значению  [new]
Konst_One
Member

Откуда:
Сообщений: 11175
что за поиск у вас такой по одному символу , да и то цифра. полнотекстовый поиск не для этого:

CONTAINS может производить поиск:
  • слова или фразы;
  • префикса слова или фразы;
  • слова около другого слова;
  • слова, флективно сформированного из другого (например, слово «drive» является флективной основой слов «drives», «drove», «driving» и «driven»);
  • Слово, которое является синонимом другого слова согласно тезаурусу (например, у слова «металл» могут быть синонимы «алюминий» и «сталь»).
  • 5 мар 19, 15:45    [21825494]     Ответить | Цитировать Сообщить модератору
     Re: full-text search - Поиск по значению  [new]
    Ролг Хупин
    Member

    Откуда: Чебаркуль
    Сообщений: 2581
    Konst_One
    что за поиск у вас такой по одному символу , да и то цифра. полнотекстовый поиск не для этого:

    CONTAINS может производить поиск:
  • слова или фразы;
  • префикса слова или фразы;
  • слова около другого слова;
  • слова, флективно сформированного из другого (например, слово «drive» является флективной основой слов «drives», «drove», «driving» и «driven»);
  • Слово, которое является синонимом другого слова согласно тезаурусу (например, у слова «металл» могут быть синонимы «алюминий» и «сталь»).


  • надо проверить установку для шумных слов.

    Другой вопрос - а нафига такое?
    5 мар 19, 17:26    [21825621]     Ответить | Цитировать Сообщить модератору
     Re: full-text search - Поиск по значению  [new]
    AneP
    Member

    Откуда: Ставрополь
    Сообщений: 71
    Спасибо всем за ответы. Я примерно понял суть проблемы

    1 full-text search. я использую для поиска в приложении в некоторых таблицах. Ввод данных зависит не от меня. Это то что мог выбрать (и выбрал) пользователь
    2 и всё таки осталось несколько вопросов

    2.1 Получается если пользователь ввел один символ лучше это ограничивать? С этим примерно понятно

    2.2 Если пользователь ввел часть слова. Подскажите синтаксис поиска части слова


    SELECT TOP 10 * FROM [dbo].[UserInfoData_Country] as country WHERE  CONTAINS (country.Value, '"*осси*"')
    
    не отрабатывает
    7 мар 19, 07:51    [21826925]     Ответить | Цитировать Сообщить модератору
     Re: full-text search - Поиск по значению  [new]
    Konst_One
    Member

    Откуда:
    Сообщений: 11175
    вы суть полнотекстового поиска не поняли, почитайте ещё раз
    7 мар 19, 11:18    [21827073]     Ответить | Цитировать Сообщить модератору
     Re: full-text search - Поиск по значению  [new]
    Yuri Abele
    Member

    Откуда: Латвия -> Литва -> Тольятти -> Karlsruhe
    Сообщений: 1552
    SELECT TOP 10 * FROM [dbo].[UserInfoData_Country] as country WHERE  CONTAINS (country.Value, '"*осси*"')
    

    На сколько я помню, звёздочка вначала слова не работает, только в конце.
    7 мар 19, 11:35    [21827106]     Ответить | Цитировать Сообщить модератору
     Re: full-text search - Поиск по значению  [new]
    Konst_One
    Member

    Откуда:
    Сообщений: 11175
    SELECT TOP (10) * FROM [dbo].[UserInfoData_Country] as country WHERE  country.Value LIKE '%осси%'
    


    не мучайте fulltext search для таких задач
    7 мар 19, 11:37    [21827111]     Ответить | Цитировать Сообщить модератору
     Re: full-text search - Поиск по значению  [new]
    Ролг Хупин
    Member

    Откуда: Чебаркуль
    Сообщений: 2581
    AneP
    Спасибо всем за ответы. Я примерно понял суть проблемы

    1 full-text search. я использую для поиска в приложении в некоторых таблицах. Ввод данных зависит не от меня. Это то что мог выбрать (и выбрал) пользователь
    2 и всё таки осталось несколько вопросов

    2.1 Получается если пользователь ввел один символ лучше это ограничивать? С этим примерно понятно

    2.2 Если пользователь ввел часть слова. Подскажите синтаксис поиска части слова


    SELECT TOP 10 * FROM [dbo].[UserInfoData_Country] as country WHERE  CONTAINS (country.Value, '"*осси*"')
    
    не отрабатывает




    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/17653360-2c72-4647-96f0-d3a2a9e67f0e/searching-partial-and-or-full-word-from-fulltext-search-those-might-be-precise-or-fuzzy-less?forum=transactsql


    автор
    Full-text search performs on a linguistic search against the data, operating on words and phrases based on rules of a particular language.

    As to using CONTAINSTABLE or CONTAINS, while the character “*” at the end of the contains search condition which is included with double quotation marks (“), for example, CONTAINSTABLE(MyLookupTable, * , '"tball*"'), it will return the word or phrase begin with “tball”. However, the character “*” at the beginning or in the middle of the contains search condition will be ignored because it only represents an asterisk.

    As to using FREETEXTTABLE or FREETEXT, the character “*” will be ignored. For example, FREETEXTTABLE(MyLookupTable, *, '"footb*"' ), it will return the word or phrase equal to “footb”. It is the same while you use single quotation mark (') or single quotation mark (') and Double quotation marks (“).

    For more information, Please refer to: CONTAINS, CONTAINSTABLE, FREETEXT, FREETEXTTABLE.

    I wanted to search all those that contains 'ball' or 'bal' or any partial work like 'oot' should return me all those precise or fuzzy (less precise) OR matching the meaning that has some partial text matching to my seach criterial, from begining, from end or from middle of the word, it should return me correct values but it won't.

    You may have to use the LIKE clause to approach the effect for such Relatively exact matching.
    8 мар 19, 11:59    [21827872]     Ответить | Цитировать Сообщить модератору
     Re: full-text search - Поиск по значению  [new]
    Владислав Колосов
    Member

    Откуда:
    Сообщений: 6399
    Всех неискушенных сбивает с толку "полнотекстный". Создается впечатление, что можно искать любое вхождение строки в весь документ.
    9 мар 19, 22:31    [21828559]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить