powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Full-Text Search
14 сообщений из 14, страница 1 из 1
Full-Text Search
    #39770366
Алексаша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
MS SQL SERVER 2017

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

Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "дел*"')



почему без слова "дел" есть результат а с "дел" нет результата ?
...
Рейтинг: 0 / 0
Full-Text Search
    #39770376
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексашаЗдравствуйте.
MS SQL SERVER 2017

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

Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "дел*"')



почему без слова "дел" есть результат а с "дел" нет результата ?

есть поле, где есть все три ?
...
Рейтинг: 0 / 0
Full-Text Search
    #39770443
Алексаша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, есть записи где все 3 слова. Чисто дел* находит как только добавишь ещё слово нет результата :(
...
Рейтинг: 0 / 0
Full-Text Search
    #39770630
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексашаДа, есть записи где все 3 слова. Чисто дел* находит как только добавишь ещё слово нет результата :(


приведите пример - какая запись не находится, а должна, по вашему мнению
...
Рейтинг: 0 / 0
Full-Text Search
    #39799167
Алексаша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

вот есть запись со значением в поле
field = "РЗЧ, обустройство личных дел"

при таких запросах не возвращает записи
Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "дел*"')



Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "де*"')



а вот так возвращает

Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*"')



Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "д*"')



Блин ... В чем дело?
...
Рейтинг: 0 / 0
Full-Text Search
    #39799272
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексаша,

е нерусская?
...
Рейтинг: 0 / 0
Full-Text Search
    #39799313
Алексаша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

проверил. кириллическая
...
Рейтинг: 0 / 0
Full-Text Search
    #39799767
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексашаРолг Хупин,

вот есть запись со значением в поле
field = "РЗЧ, обустройство личных дел"

при таких запросах не возвращает записи
Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "дел*"')



Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "де*"')





а вот так возвращает

Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*"')



Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустр*" and "лич*" and "д*"')



Блин ... В чем дело?


Проверил, все запросы находят,, правда поле сделал nvarchar на всякий случай, и запросы тоже типа

Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field,N '"обустр*" and "лич*" and "де*"')
...
Рейтинг: 0 / 0
Full-Text Search
    #39799912
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А коллейшн какой?
...
Рейтинг: 0 / 0
Full-Text Search
    #39799950
dvk92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем вам после слово дел - *?

Оно же является последним в строке?
...
Рейтинг: 0 / 0
Full-Text Search
    #39813447
Алексаша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел ответ на свой вопрос.
В студии правой мышкой по таблице с полнотекстовым поиском Полнотекстовый индекс -> Свойства. Вкладка общие, свойство список стоп-слов полнотекстового индекса = системный.

если поставить значение индекса = выкл. то все работает как надо только как следствие вырос размер индекса.
решил посмотреть:
Код: sql
1.
2.
3.
SELECT *
FROM sys.fulltext_system_stopwords ssw
WHERE language_id = 1049;



слово "дел" там присутствует как и другие (важная, вести) по которым у меня поиск не работал и предлоги.

в итоге я в недоумении как правильно использовать список стоп-слов. получается перед запросом надо проверить не находится слово из раздела where в списке стоп-слов и если оно там есть то не использовать его.
или как это предполагается использовать по-уму?
ведь пользователь может ввести искомую фразу вместе с предлогом и в итоге из-за одного предлога "в" результат будет пуст
...
Рейтинг: 0 / 0
Full-Text Search
    #39813836
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексашаНашел ответ на свой вопрос.
В студии правой мышкой по таблице с полнотекстовым поиском Полнотекстовый индекс -> Свойства. Вкладка общие, свойство список стоп-слов полнотекстового индекса = системный.

если поставить значение индекса = выкл. то все работает как надо только как следствие вырос размер индекса.
решил посмотреть:
Код: sql
1.
2.
3.
SELECT *
FROM sys.fulltext_system_stopwords ssw
WHERE language_id = 1049;



слово "дел" там присутствует как и другие (важная, вести) по которым у меня поиск не работал и предлоги.

в итоге я в недоумении как правильно использовать список стоп-слов. получается перед запросом надо проверить не находится слово из раздела where в списке стоп-слов и если оно там есть то не использовать его.
или как это предполагается использовать по-уму?
ведь пользователь может ввести искомую фразу вместе с предлогом и в итоге из-за одного предлога "в" результат будет пуст

В том-то и смысл шумных слов, что они будут игнорироваться при поиске.
Если вы настроены отключить их, то готовьтесь к тому, что индекс будет намного больше, время поиска увеличится, а толку - почти 0.
Для того и придумали стоп-слова, чтобы не искать несущественные, например, все цифры, артикли всякие и т.д.
...
Рейтинг: 0 / 0
Full-Text Search
    #39814140
Алексаша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

Правильно ли я вас понял?
Получается если от клиента на сервер пришло условие поиска, т.е. слова кот. должен содержать документ, то прежде чем делать выборку надо проверить не входит ли слово в перечень стоп-листа
т.е. не выполнять такой запрос
Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустройство" and "личных" and "дел"')


а исключить слово "дел"
Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустройство" and "личных"')


В таком случае нужно проинформировать пользователя об исключении этого слова чтобы его не удивлял результат, который будет отличатся от ожидаемого.
Что скажите?
...
Рейтинг: 0 / 0
Full-Text Search
    #39814534
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексашаРолг Хупин,

Правильно ли я вас понял?
Получается если от клиента на сервер пришло условие поиска, т.е. слова кот. должен содержать документ, то прежде чем делать выборку надо проверить не входит ли слово в перечень стоп-листа
т.е. не выполнять такой запрос
Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустройство" and "личных" and "дел"')


а исключить слово "дел"
Код: sql
1.
2.
3.
select *
from dbo.Table
where contains (field, '"обустройство" and "личных"')


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

Как вы проверите? заметьте, что шумные слова могут тоже быть представлены в юзерской фразе в какой-то форме
И что вы будете делать после того, как, предположим, проверите фразу и там будут стоп слова?

Не стоит заниматься фигней, изобретая велоспипед.

Почитайте для начала, что пишут здесь:
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/transform-noise-words-server-configuration-option?view=sql-server-2017
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Full-Text Search
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]