powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 4.0 Вопрос
25 сообщений из 39, страница 1 из 2
FB 4.0 Вопрос
    #39393909
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброй ночи!

В FB4.0 будет что нибудь оптимизировано в плане быстрого поиска по текстовым полям (CONTAINIG, LIKE)?

Хотелось бы - Триграмный индекс
Пример 2
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39393910
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сфинкс пробовал?
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39393911
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrсфинкс пробовал?

Сфинкс работает прекрасно, претензий к нему нету.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39393941
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так шашечки или ехать?
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39393974
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно подумать о более тесной интеграции со sphinx'ом.
Но нужен кто-то, кто хорошо знает и понимает задачи FTS и sphinx
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394230
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladМожно подумать о более тесной интеграции со sphinx'ом.
Но нужен кто-то, кто хорошо знает и понимает задачи FTS и sphinx

Нужна либо поддержка, например, триграмного индекса, либо более тесная интеграция со sphinx, например как в PG тут
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394281
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__Нужна либо поддержка, например, триграмного индекса, либо более тесная интеграция со sphinx, например как в PG
Поддержу, т.к. для многих задач (без учёта морфологии и индивидуального тюнинга FTS) простого like хватает. Его оптимизация через триграмы творит чудеса. Сам лично гонял тесты на PG.
По сугубо личным ощущениям у 30-50% пользователей именно триграмы решат поставленные задачи. FTS же совсем отдельная тема.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394282
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmСам лично гонял тесты на PG.
А что, они решили с беглыми гласными и согласными в русском языке?
Али всё по прежнему убого - в рамках тарабарского.

afgmбез учёта морфологии...
FTS не существует.
Без нее - ни чуть не лучше like.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394283
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько триграммный индекс замедляет вставки ?
Сколько он занимает места ?
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394285
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneafgmСам лично гонял тесты на PG.
А что, они решили с беглыми гласными и согласными в русском языке?
Али всё по прежнему убого - в рамках тарабарского.
Поиск по триграмному индексу работает в PG некорректно для русского языка?
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394288
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmПоиск по триграмному индексу работает в PG некорректно для русского языка?
Так это ты же тестил.
Вот я и интересуюся про беглые буквы, коих в русском язхыке предостаточно.
Слова, типа "вошь" и "вша" - как он справляется?
Или по проще: "церковь" -> "церквей".

Да хоть семигранный индекс, главное что бы искал правильно.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394290
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladНасколько триграммный индекс замедляет вставки ?
Сколько он занимает места ?
Подозреваю, что Влад знает ответы на эти вопросы, но хочет услышать их от просителей :)
В нецифровых оценках: замедляет ощутимо, места требует, уже не помню, но прилично.
Правда поддерживать индекс в Sphinx, или имитировать работу триграмм (правильно таки две "м"), тоже накладно, да ещё и запросы получаются громоздкими.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394291
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneТак это ты же тестил.
Вот я и интересуюся про беглые буквы, коих в русском язхыке предостаточно.
Слова, типа "вошь" и "вша" - как он справляется?
Или по проще: "церковь" -> "церквей".

Да хоть семигранный индекс, главное что бы искал правильно.
А like справляется с такими?
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394292
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladНасколько триграммный индекс замедляет вставки ?

Берем текст 64K, делим на 7,2 букв (среднее в русском слове) получаем ~ 9100 слов.
Умножаем кол-во слов на 5 (среднее кол-во словоформ) и...
- Дорогая переда, на Канатчиковую дачу...
(далее близко по тексту Классика)
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394294
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmА like справляется с такими?
А я тебе что сразу сказал, ась? ( тынц )

Без учета морфологии Русского Языка - называться FTS система НЕ может.
Ибо она ни чем не лучше, чем like.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394299
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneafgmА like справляется с такими?
А я тебе что сразу сказал, ась? ( тынц )

Без учета морфологии Русского Языка - называться FTS система НЕ может.
Ибо она ни чем не лучше, чем like.
Ты даёшь тынц, в укор, что я тебя не читаю. Однако сам не читаешь.
С пояснениями:
afgmПоддержу, т.к. для многих задач (без учёта морфологии и индивидуального тюнинга FTS т.е. задач не требующих всех плюшек FTS ) простого like хватает. Его оптимизация (like-а и никого более) через триграмы творит чудеса. Сам лично гонял тесты на PG (именно like-а на триграммах)
триграммы - ускорение поиска по like (и то не во всех случаях) и ничего более . similarity там довеском, и морфологию не учитывает.
FTS - сосем иная тема, и предлагаю её не мешать в одну кучу.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394302
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__Нужна либо поддержка, например, триграмного индексаЯ сам его руками не трогал, но могу предположить что:
- это можно относительно легко сделать на базе наших B-tree индексов
- это будет жутко тормозить вставки, апдейты и сборку мусора
- сам индекс будет занимать гораздо больше места, чем обычный индекс по строке
- скорость поиска далеко не всегда будет ожидаемо высокой

afgmПодозреваю, что Влад знает ответы на эти вопросы, но хочет услышать их от просителей :)Не знает, но предполагает :) И - да - хочет :)
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394303
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmС пояснениями:
Так и запишем: - Всё по прежнему уныло, сиро и убого, аки тарабарский.
О чем и был первый мой вопрос. ( тынц )
Но ты жеж нечетатель...
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394304
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__либо более тесная интеграция со sphinx, например как в PG тут Это чем-то принципиально отличается от твоей библиотеки ф-ций для 3-ки ?

Говоря об интеграции, я имел в виду именно интеграцию, а не расширение с помошью UDF.
От нативной поддержки в SQL до управления самим поисковым движком sphinx.

Да, я тоже иногда люблю помечтать :)
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394311
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIneО чем и был первый мой вопрос. ( тынц )
Это конечно интересный метод: отвечать на выдуманные тезисы, но, прошу, не скатывайся до rdb_dev тут
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394317
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmЭто конечно интересный метод: отвечать на выдуманные тезисы...
Дружок...
Ответ на мой вопрос про "беглые буквы" - тру или фолс. И вся не долга. Решили эту проблему или нет.
И я тебя не заставлял написать: " Сам лично гонял тесты на PG."
Раз гонял тесты, то почему бы и не задать тебе такой элементарный вопрос?

Ведь раз шпрехаешь по-русски, то далжОн и это про тестит, как наиболее часто встречающуюся особенность Русского Языка.
А если не протестил, то кто тебе ССЗБ?

Тебе не врезали по айцам:
- А как там дела с словами-исключениями из Правил Русского Языка.
Таких слов тоже предостаточно: Цыган на цыпочках... и далее во всех вариациях.

И заметь - не размазали ровным слом ниже плинтуса вопросом:
- А как обстоит дело со вновь заимствованными словами и их "русификацией"?
Типа: "Окейно" и прочее разговорно-жаргонное словотворчество населения.

- Так чёго кипешишь? Али чуешь, что пальцы дверкой прищемили тем вопросом? ;-)

А вот твой метода - отвечать вопросом на вопрос.
Но и в это ты не силен.

PS: Ну знаю, по каким местам бить адептов FTS-тарабарских какбэ-систЭмс.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394355
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad__Avenger__либо более тесная интеграция со sphinx, например как в PG тут Это чем-то принципиально отличается от твоей библиотеки ф-ций для 3-ки ?

Говоря об интеграции, я имел в виду именно интеграцию, а не расширение с помошью UDF.
От нативной поддержки в SQL до управления самим поисковым движком sphinx.

Да, я тоже иногда люблю помечтать :)

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

В моей реализации недостатки следующие:
1. Во первых она не на C.
2. В UDR я не могу вернуть набор с произвольным количеством столбцов.
Т.е если я написал запрос для Sphinx
Код: sql
1.
SELECT * from SPHINXCLIENT$EXECUTE1('SELECT MODULE_ID, ROW_ID FROM Index')

, то мне необходимо заренее объявить функцию, которая возращает нужный набор столбцов, например так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE OR ALTER PROCEDURE SPHINXCLIENT$EXECUTE1 (
    SQL_TEXT VARCHAR(8000) CHARACTER SET UTF8 NOT NULL)
RETURNS (
    MODULE_ID BIGINT,
    ROW_ID VARCHAR(128) CHARACTER SET OCTETS)
EXTERNAL NAME 'udr_SphinxClient!Execute1'
ENGINE UDR



Либо делать более универсальное решение, например такое:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR ALTER PROCEDURE SPHINXCLIENT$EXECUTE (
    SQL_TEXT VARCHAR(8000) CHARACTER SET UTF8 NOT NULL),
    SQL_FIELDS VARCHAR(100)
RETURNS (
    F1 BIGINT,
    F2 VARCHAR(128) CHARACTER SET OCTETS),
    F3 INT,
    F4 CHAR(3)
EXTERNAL NAME 'udr_SphinxClient!Execute'
ENGINE UDR



И потом вызывать, например так:
Код: sql
1.
SELECT * from SPHINXCLIENT$EXECUTE('SELECT F1, F2, F3, F4 FROM Index', 'BIGINT/VARCHAR(128)/INT/CHAR3')



А хочется так:
Код: sql
1.
SELECT * from SPHINX('SELECT F1, F2, F3, F4 FROM Index)


И запрос сразу возвращает нужное количество полей с нужным типом.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394356
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad__Avenger__Нужна либо поддержка, например, триграмного индексаЯ сам его руками не трогал, но могу предположить что:
- это можно относительно легко сделать на базе наших B-tree индексов
- это будет жутко тормозить вставки, апдейты и сборку мусора
- сам индекс будет занимать гораздо больше места, чем обычный индекс по строке
- скорость поиска далеко не всегда будет ожидаемо высокой

Те, кому нужен этот индекс должны понимать и про большие накладные расходы на размер индекса, скорость вставки и т.д.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394565
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ сам его руками не трогал, но могу предположить что:
- это можно относительно легко сделать на базе наших B-tree индексов
- это будет жутко тормозить вставки, апдейты и сборку мусора
- сам индекс будет занимать гораздо больше места, чем обычный индекс по строке
- скорость поиска далеко не всегда будет ожидаемо высокой

Было бы очень интересно, даже так: ОЧЕНЬ интересно.

Как я себе вижу применение, что прежде всего справочник ассортимента с сопутствующими справочниками типа брендов, в свете пожеланий руководства расширить ассортимент на порядок (с 200 тыс наименований до пары миллионов). В силу того, что ассортимент, это не выписка первички, путь немного тормознется вставка, готовы мириться. Если это закачка ассортимента поставщика, то она пойдет отдельным тредом, скорее всего в непиковое время, тоже не вопрос, если будет идти дольше в два-три раза. "Жутко тормозить" - это сколько в "разах"?
Место... ну а что место, решим "в железе", короче, тоже готовы мириться. Скорость поиска будет хромать? А почему? хотелось бы чуть более расширенную версию, для тех, кто "не совсем в теме".
Морфология... ну а что морфология, решили навешиванием справочника синонимов на некоторые справочники и поиска тем же контайнингом и по синонимам тоже, может и топорно, но работает. хундай, хёндэ, ... hyundai, бош опять таки, находит.
...
Рейтинг: 0 / 0
FB 4.0 Вопрос
    #39394571
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

если делать на базе имеющихся b-tree индексов, то нужно понимать что
- в индекс будет вставляеться не один ключ, а столько, сколько триграмм в индексируемой строке
- эти триграммы могут быть в совершенно разных ветках индекса, т.е. операция затронет гораздо
больше страниц и потребует больше random-io
- то же самое при удалении из индекса
- то же самое при поиске - придётся искать не один ключ, а столько, сколько триграмм в искомой строке

Достаточно аргументов ? :)
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB 4.0 Вопрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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