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

Откуда:
Сообщений: 83
Добрый день всем.

Есть каталог фирм и их товаров. Таблица "Фирмы", таблица "Номенклатура". Так же есть таблица "Города" в которых фирмы расположены.

Нужно сделать полнотекстовый поиск фирм по их товарам. (Например найти все фирмы которые продают воду, или мед, или сахар рафинированный)

Ознакомился в Full Text Search у MsSQL и решил поиск делать на основе Full Text Search.

Первое что приходит на ум, это сделать сводную таблицу из четырех столбцов:

Индекс, ИндексГорода (Int), ИндексФирмы (Int), ТоварыФирмы (TEXT)

где одна строка будет соответствовать ТОЛЬКО одной фирме, а все товары каждой фирмы хочу объединить в одно поле "ТоварыФирмы" через пробел (что то вроде поле ключевых слов).

Затем осуществлять поиск по столбцу "ТоварыФирмы" средствами Full Text Search от MsSQL.

1. Насколько приемлемое решение?
2. Как лучше собирать данные в объединенную таблицу (нужно писать внешнюю программу обрабатывающую построчно товары, или можно средствами T-SQL это сделать)? Если средствами T-SQL то думаю было бы идеально создать VIEW для целей Full Text Search?
3. Вопрос обновления данных при изменении, добавлении, удалении записей в исходных таблицах как решать?

Буду признателен за любые ваши советы и комментарии.
29 сен 14, 13:41    [16633835]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamer666
Первое что приходит на ум, это сделать сводную таблицу из четырех столбцов:

А что сейчас мешает сделать поиск "все фирмы которые продают воду, или мед, или сахар рафинированный" по таблице "Номенклатура" ?
29 сен 14, 13:45    [16633866]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Glory
Lamer666
Первое что приходит на ум, это сделать сводную таблицу из четырех столбцов:

А что сейчас мешает сделать поиск "все фирмы которые продают воду, или мед, или сахар рафинированный" по таблице "Номенклатура" ?


В принципе ничего, но:
1. Отдельная таблица, отдельные права для WEB сайта или приложения с которого будут идти запросы
2. Планирую ввести еще один параметр в сводную таблицу (Рейтинг). Чем чаще фигурирует фирма в запросе, тем выше рейтинг, в сложном запросе "Номенклатура" <-> "Фирмы" <-> "Города", куда это рейтинг подвязать можно?
29 сен 14, 14:02    [16633952]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamer666
1. Отдельная таблица, отдельные права для WEB сайта или приложения с которого будут идти запросы

И что опять мешает дать отдельные права на существующие таблицы ?

Lamer666
2. Планирую ввести еще один параметр в сводную таблицу (Рейтинг). Чем чаще фигурирует фирма в запросе, тем выше рейтинг, в сложном запросе "Номенклатура" <-> "Фирмы" <-> "Города", куда это рейтинг подвязать можно?

Что такое "фигурирует фирма в запросе" ? Имя фирмы используется в критериях поиска ?
29 сен 14, 14:06    [16633971]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Glory
Lamer666
1. Отдельная таблица, отдельные права для WEB сайта или приложения с которого будут идти запросы

И что опять мешает дать отдельные права на существующие таблицы ?

Lamer666
2. Планирую ввести еще один параметр в сводную таблицу (Рейтинг). Чем чаще фигурирует фирма в запросе, тем выше рейтинг, в сложном запросе "Номенклатура" <-> "Фирмы" <-> "Города", куда это рейтинг подвязать можно?

Что такое "фигурирует фирма в запросе" ? Имя фирмы используется в критериях поиска ?


По идее ничего не мешает прописать отдельные права для нового пользователя из под которого будут выполнять запросы в систему

А по поводу параметра:
Ну например, мне может понадобиться ввести флаг, такой, что бы при запросе не выходили одни и те же фирмы, например, если фирму показали один раз в поиске, то при следующем запросе ее не надо показывать, а надо показать следующие N фирм, а потом следующие 20 и следующие 20... и так доконца... Показанными фирмам хочу увеличивать флаг показа и отбирать новых с минимальным флагом.
29 сен 14, 14:14    [16634020]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamer666
Показанными фирмам хочу увеличивать флаг показа и отбирать новых с минимальным флагом.

Увеличивайте. Отбирайте.
Как тут поможет FTS ?
29 сен 14, 14:16    [16634037]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Lamer666
Glory
пропущено...

И что опять мешает дать отдельные права на существующие таблицы ?

пропущено...

Что такое "фигурирует фирма в запросе" ? Имя фирмы используется в критериях поиска ?


По идее ничего не мешает прописать отдельные права для нового пользователя из под которого будут выполнять запросы в систему

А по поводу параметра:
Ну например, мне может понадобиться ввести флаг, такой, что бы при запросе не выходили одни и те же фирмы, например, если фирму показали один раз в поиске, то при следующем запросе ее не надо показывать, а надо показать следующие N фирм, а потом следующие 20 и следующие 20... и так доконца... Показанными фирмам хочу увеличивать флаг показа и отбирать новых с минимальным флагом.


это пэйджынг такой своеобразный?
29 сен 14, 14:30    [16634128]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Glory
Lamer666
Показанными фирмам хочу увеличивать флаг показа и отбирать новых с минимальным флагом.

Увеличивайте. Отбирайте.
Как тут поможет FTS ?


Ну хорошо, тогда вот такой случай:
Например надо по средствам FTS отбирать фирмы не только по позициям товаров (мука, вода питьевая, сахар), но и информацию по самой фирме (улица, график работы [пример: сахар на проспекте Сахарова]). Может FTS производить поиск по 2,3,4 полям РАЗНЫХ ТАБЛИЦ (наименование номенклатуры из Номенклатуры, улица из Адресов)?

Плюс каждую фирму может характеризовать еще дополнительный набор ключевых слов.
Например фирма продает парфюмерию, очевидно что при поиске в FTS по позициям номенклатуры, она (фирма) будет появляться в запросах "туалетная вода", "тушь" и т.д., но при запросе "парфюмерия" (весьма свойственное ключевое слово для фирмы) в номенклатуре позиций товаров со словом ПАРФЮМЕРИЯ, может не оказаться.
В случае же сводной таблицы (можно в единое поле для фирмы добавлять любые дополнительные ключевые слова)

Хотелось бы услышать ваше мнение, Glory.
29 сен 14, 17:06    [16635142]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Winnipuh
это пэйджынг такой своеобразный?


Нет, это опциональная возможность, суть которой в том, что Ищущий №1, Ищущий №2... Ищущий №n при каждом запросе будут получать разные фирмы, тем самым создавая некоторую "справедливость отбора", не появляться же одним и тем же фирмам в поиске постоянно в ущерб тем кто еще не фигурировал в отборе.
Показались разок и снова встают в конец очереди на показ.
29 сен 14, 17:11    [16635162]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamer666
Может FTS производить поиск по 2,3,4 полям РАЗНЫХ ТАБЛИЦ (наименование номенклатуры из Номенклатуры, улица из Адресов)?

Т.е. вы вообще ничего не читали про FTS ?

Lamer666
Например надо по средствам FTS

Т.е. использование FTS это уже обязательное условие ?

Lamer666
Хотелось бы услышать ваше мнение, Glory.

Зачем из структурированных данных лепить большое текстовое поле, которое FTS опять распарсит на лексемы, но при этом потеряет тип и смысл каждой лексемы ?
29 сен 14, 17:11    [16635164]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Lamer666
Glory
пропущено...

Увеличивайте. Отбирайте.
Как тут поможет FTS ?


Ну хорошо, тогда вот такой случай:
Например надо по средствам FTS отбирать фирмы не только по позициям товаров (мука, вода питьевая, сахар), но и информацию по самой фирме (улица, график работы [пример: сахар на проспекте Сахарова]). Может FTS производить поиск по 2,3,4 полям РАЗНЫХ ТАБЛИЦ (наименование номенклатуры из Номенклатуры, улица из Адресов)?

Плюс каждую фирму может характеризовать еще дополнительный набор ключевых слов.
Например фирма продает парфюмерию, очевидно что при поиске в FTS по позициям номенклатуры, она (фирма) будет появляться в запросах "туалетная вода", "тушь" и т.д., но при запросе "парфюмерия" (весьма свойственное ключевое слово для фирмы) в номенклатуре позиций товаров со словом ПАРФЮМЕРИЯ, может не оказаться.
В случае же сводной таблицы (можно в единое поле для фирмы добавлять любые дополнительные ключевые слова)

Хотелось бы услышать ваше мнение, Glory.



у вас просто структура базы неверно спроекьтрованна и не заведены соответственно справочники номенклатуры и тп, отсюда и копаете не в ту сторону. делайте нормальное реляционное хранилище и пишите внятные запросы с нужными вам фильтрами и все дела. А вы начинаете из базы кучу делать, а потом её героически разгребать. Может вам ттогда в noSQL податься?
29 сен 14, 17:20    [16635209]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Glory
Lamer666
Может FTS производить поиск по 2,3,4 полям РАЗНЫХ ТАБЛИЦ (наименование номенклатуры из Номенклатуры, улица из Адресов)?

Т.е. вы вообще ничего не читали про FTS ?

Lamer666
Например надо по средствам FTS

Т.е. использование FTS это уже обязательное условие ?

Lamer666
Хотелось бы услышать ваше мнение, Glory.

Зачем из структурированных данных лепить большое текстовое поле, которое FTS опять распарсит на лексемы, но при этом потеряет тип и смысл каждой лексемы ?


Про FTS читал, но поверхностно, пару примеров опробовал.

FTS использовать обязательно, потому FTS умеет делать морфологический поиск, что весьма важно для полноценного поиска.

Зачем из структурированных данных лепить большое текстовое поле, которое FTS опять распарсит на лексемы, но при этом потеряет тип и смысл каждой лексемы?

Согласен, незачем, я вообще сторонник меньших ресурсозатрат и максимально простых конструкций, но я просто не знаю может ли FTS искать по нескольким полям, в нескольких таблицах... и в таблице номенклатура и в таблице дополнительных индексов?
29 сен 14, 17:22    [16635218]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamer666
FTS использовать обязательно, потому FTS умеет делать морфологический поиск, что весьма важно для полноценного поиска.

И какой же морфологический поиск вам нужен, если вы ищите по ключевым словам ?
У вас слово "парфюмерия" может быть в таблице Номенклатуры записана в разных формах что ли ?
29 сен 14, 17:24    [16635225]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Konst_One
Lamer666
пропущено...


Ну хорошо, тогда вот такой случай:
Например надо по средствам FTS отбирать фирмы не только по позициям товаров (мука, вода питьевая, сахар), но и информацию по самой фирме (улица, график работы [пример: сахар на проспекте Сахарова]). Может FTS производить поиск по 2,3,4 полям РАЗНЫХ ТАБЛИЦ (наименование номенклатуры из Номенклатуры, улица из Адресов)?

Плюс каждую фирму может характеризовать еще дополнительный набор ключевых слов.
Например фирма продает парфюмерию, очевидно что при поиске в FTS по позициям номенклатуры, она (фирма) будет появляться в запросах "туалетная вода", "тушь" и т.д., но при запросе "парфюмерия" (весьма свойственное ключевое слово для фирмы) в номенклатуре позиций товаров со словом ПАРФЮМЕРИЯ, может не оказаться.
В случае же сводной таблицы (можно в единое поле для фирмы добавлять любые дополнительные ключевые слова)

Хотелось бы услышать ваше мнение, Glory.



у вас просто структура базы неверно спроекьтрованна и не заведены соответственно справочники номенклатуры и тп, отсюда и копаете не в ту сторону. делайте нормальное реляционное хранилище и пишите внятные запросы с нужными вам фильтрами и все дела. А вы начинаете из базы кучу делать, а потом её героически разгребать. Может вам ттогда в noSQL податься?


Да база уже есть, поэтому я и спрашиваю как лучше поступить.
Хорошо предположим переделаю БД в нормальную реляционную БД, тогда как мне организовать полноценный морфологический поиск по нужным полям в разных таблицах?
29 сен 14, 17:26    [16635235]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
зачем именно морфологический?
29 сен 14, 17:27    [16635242]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Glory
Lamer666
FTS использовать обязательно, потому FTS умеет делать морфологический поиск, что весьма важно для полноценного поиска.

И какой же морфологический поиск вам нужен, если вы ищите по ключевым словам ?
У вас слово "парфюмерия" может быть в таблице Номенклатуры записана в разных формах что ли ?


"Прафюмерный магазин" например при вводе в поиске "парфюмерный" я не получу строки со словом "парфюмерия"!!!!
29 сен 14, 17:27    [16635249]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
ну и что?
заведите сущность в справочнике, сделайте FK этот справочник в нужных таблицах по товару и ищите уже по этой категории.
у вас наверняка не 3-я нормальная форма, отсюда и проблемы на пустом месте
29 сен 14, 17:30    [16635265]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamer666
"Прафюмерный магазин" например при вводе в поиске "парфюмерный" я не получу строки со словом "парфюмерия"!!!!


"Прафюмерный магазин" это какой аттрибут ваших таблиц ?
Называние фирмы ? Города ? Номенклатуры ?
29 сен 14, 17:34    [16635286]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Glory
Lamer666
"Прафюмерный магазин" например при вводе в поиске "парфюмерный" я не получу строки со словом "парфюмерия"!!!!


"Прафюмерный магазин" это какой аттрибут ваших таблиц ?
Называние фирмы ? Города ? Номенклатуры ?

Название фирмы например!

Человек ищет духи.
Он в поиске может вводит "Парфюмерия"
Таким образом производя поиск по таблице с товаром ничего не найдется.
Но если поиск вести и по таблице с товарами, по названию фирм, по доп.ключевым словам, может найтись "Парфюмерный магазин РОМАШКА"

Таким образом без морфологии "Парфюмерия" и "Парфюмерный" это разные вещи, это раз.
А два, это то, что если в поиске будет участвовать только номенклатура, без название фирм, без адресов фирм, без дополнительных ключевых слов то поиск не будет давать результаты, как например я описал выше.
29 сен 14, 17:42    [16635334]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Konst_One
ну и что?
заведите сущность в справочнике, сделайте FK этот справочник в нужных таблицах по товару и ищите уже по этой категории.
у вас наверняка не 3-я нормальная форма, отсюда и проблемы на пустом месте


Можно по проще, объяснить? Что значит "сущность" имеете ввиду сделать справочник с ключевыми словами и прявязывать все позиции к этим ключевым словам?
29 сен 14, 17:45    [16635352]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lamer666
Человек ищет духи.
Он в поиске может вводит "Парфюмерия"

Ну так через Номенклатуру ему должны быть выбраны все товары этой категории и фирмы
29 сен 14, 17:46    [16635360]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Glory
Lamer666
Человек ищет духи.
Он в поиске может вводит "Парфюмерия"

Ну так через Номенклатуру ему должны быть выбраны все товары этой категории и фирмы


+1
29 сен 14, 17:49    [16635379]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Lamer666
Member

Откуда:
Сообщений: 83
Glory
Lamer666
Человек ищет духи.
Он в поиске может вводит "Парфюмерия"

Ну так через Номенклатуру ему должны быть выбраны все товары этой категории и фирмы


Согласен! ))) Но кто то же может ввести обобщенный запрос... некое ключевое слово которое 100% характеризует фирму, но не встречается в позиции номенклатуры!

Название фирмы: "Парфюмерный магазин Ромашка"
Товары:
1. Духи свежесть
2. Тушь КРАСОТКА

при поиске "Парфюмерия", наша фирма в пролете.
29 сен 14, 17:49    [16635382]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Lamer666
Konst_One
ну и что?
заведите сущность в справочнике, сделайте FK этот справочник в нужных таблицах по товару и ищите уже по этой категории.
у вас наверняка не 3-я нормальная форма, отсюда и проблемы на пустом месте


Можно по проще, объяснить? Что значит "сущность" имеете ввиду сделать справочник с ключевыми словами и прявязывать все позиции к этим ключевым словам?



давайте вы сюда выдложите скрипт своей таблички товаров, а мы дружно покритикуем. может что-то у вас и продвинется =)
29 сен 14, 17:50    [16635390]     Ответить | Цитировать Сообщить модератору
 Re: Full Text Search по каталогу  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Lamer666
Glory
пропущено...

Ну так через Номенклатуру ему должны быть выбраны все товары этой категории и фирмы


Согласен! ))) Но кто то же может ввести обобщенный запрос... некое ключевое слово которое 100% характеризует фирму, но не встречается в позиции номенклатуры!

Название фирмы: "Парфюмерный магазин Ромашка"
Товары:
1. Духи свежесть
2. Тушь КРАСОТКА

при поиске "Парфюмерия", наша фирма в пролете.


а почему у ваc эта фирма к категории ПАРФЮМЕРИЯ не относится?
29 сен 14, 17:51    [16635400]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить