|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
SQL: 2008R2 Enterprise Подскажите пожалуйста, как лучше организовать быстрый поиск: (в каком направлении копать) В упрощенной форме: Таблица ~30-50 млн. строк, ~50+ текстовых столбцов с относительно короткими данными как, например, личные данные, свойства артиклей, даты и т.д. (данные добавляются постоянно). Пользователь вводит слово или его начало, или несколько слов/их начал: Результат поиска: строки, в столбцах которых найдены все введенные пользователем слова (или их начала). Порядок слов не имеет значения. Т.е.: При поиске «пуп» должны быть выведены строки «пупки», «куриные», ... «Пупкин», «Василий» , ... «пупсик», «васильковый» , ... При поиске «пуп вас» должны быть выведены строки «Пупкин», «Василий» , ... «пупсик», «васильковый» , ... При поиске «пуп вас 07.11.1917» должны быть выведены строки «Пупкин», «Василий» , ... Структура таблицы упомянута как пример, и может быть изменена. Пока что попробовал слить все столбцы в один и применить полнотекстовый поиск. Но как то не очень понравилось: периодически тормозит, поиск по текстам с дефизом «AB-CD» не получился. Применять like на 50+ столбцов даже не пробовал: предполагаю, это плохая идея. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 15:41 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
Alexander Us, Таблица статическая? Или в нее идут вставки/обновления? С какой интенсивностью? Предполагается ли поиск like '%из_середины_слова%'? Почему при поиске: При поиске «пуп» должны быть выведены строки «пупки», «куриные», ... должны выводиться "куриные"? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 16:34 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
uaggster, В таблицу постоянно идут вставки. Обновлений нет. Удаление по ночам. Поиск like '%из_середины_слова% - нет, не нужен. Поиск like 'из_начала_слова% - да, нужен. «пупки», «куриные», ... Это я так изобразил найденную строку. В таблице находится: Столбец 1: «пупки» Столбец 2: «куриные» Столбец 3: ... ... Столбец N: ... Т.е. строка выводится, если искомое слово найдено в любом из столбцов. строка выводится, если все искомые слова найдены в любых столбцах. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 16:46 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
komrad, спасибо. Elasticsearch сильно платный? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 16:50 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
Alexander Us, можно ещё язык разбиения поменять на экзотический https://habr.com/ru/company/microsoft/blog/470139/ ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 16:50 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
Кесарь, Спасибо, интересная статья. Сажусь читать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 17:00 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
Alexander Us komrad, спасибо. Elasticsearch сильно платный? он бесплатен, open source ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 17:11 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
Alexander Us, кстати для полнотекстового поиска вовсе не нужно сцеплять столбцы в один. CONTAINS CONTAINSTABLE FREETEXT FREETEXTTABLE позволяют задавать список столбцов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 17:15 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
Alexander Us Пока что попробовал слить все столбцы в один Alexander Us поиск по текстам с дефизом «AB-CD» не получился. Код: sql 1. 2.
Alexander Us периодически тормозит Можно попробовать через containstable и ее результат сложить во временную таблицу, а уже ее соединять с основной. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 17:20 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
invm, он имел в виду, что не получится найти "CD", если в поле "AB-CD". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 19:32 |
|
быстрый текстовый поиск
|
|||
---|---|---|---|
#18+
Кесарь invm, он имел в виду, что не получится найти "CD", если в поле "AB-CD". получится, если правильно запрос написать. Правильно рекомендуют - вместо того, чтобы подключать еще один чужой сервис использовать FTS ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 12:38 |
|
|
start [/forum/topic.php?fid=46&msg=40074803&tid=1684645]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 412ms |
0 / 0 |