|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Доброй ночи! В FB4.0 будет что нибудь оптимизировано в плане быстрого поиска по текстовым полям (CONTAINIG, LIKE)? Хотелось бы - Триграмный индекс Пример 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2017, 00:17 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
dimitrсфинкс пробовал? Сфинкс работает прекрасно, претензий к нему нету. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2017, 00:20 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
так шашечки или ехать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2017, 09:08 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Можно подумать о более тесной интеграции со sphinx'ом. Но нужен кто-то, кто хорошо знает и понимает задачи FTS и sphinx ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2017, 12:12 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvladМожно подумать о более тесной интеграции со sphinx'ом. Но нужен кто-то, кто хорошо знает и понимает задачи FTS и sphinx Нужна либо поддержка, например, триграмного индекса, либо более тесная интеграция со sphinx, например как в PG тут ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2017, 21:51 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
__Avenger__Нужна либо поддержка, например, триграмного индекса, либо более тесная интеграция со sphinx, например как в PG Поддержу, т.к. для многих задач (без учёта морфологии и индивидуального тюнинга FTS) простого like хватает. Его оптимизация через триграмы творит чудеса. Сам лично гонял тесты на PG. По сугубо личным ощущениям у 30-50% пользователей именно триграмы решат поставленные задачи. FTS же совсем отдельная тема. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:21 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
afgmСам лично гонял тесты на PG. А что, они решили с беглыми гласными и согласными в русском языке? Али всё по прежнему убого - в рамках тарабарского. afgmбез учёта морфологии... FTS не существует. Без нее - ни чуть не лучше like. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:26 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Насколько триграммный индекс замедляет вставки ? Сколько он занимает места ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:27 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Di_LIneafgmСам лично гонял тесты на PG. А что, они решили с беглыми гласными и согласными в русском языке? Али всё по прежнему убого - в рамках тарабарского. Поиск по триграмному индексу работает в PG некорректно для русского языка? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:30 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
afgmПоиск по триграмному индексу работает в PG некорректно для русского языка? Так это ты же тестил. Вот я и интересуюся про беглые буквы, коих в русском язхыке предостаточно. Слова, типа "вошь" и "вша" - как он справляется? Или по проще: "церковь" -> "церквей". Да хоть семигранный индекс, главное что бы искал правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:40 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvladНасколько триграммный индекс замедляет вставки ? Сколько он занимает места ? Подозреваю, что Влад знает ответы на эти вопросы, но хочет услышать их от просителей :) В нецифровых оценках: замедляет ощутимо, места требует, уже не помню, но прилично. Правда поддерживать индекс в Sphinx, или имитировать работу триграмм (правильно таки две "м"), тоже накладно, да ещё и запросы получаются громоздкими. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:47 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Di_LIneТак это ты же тестил. Вот я и интересуюся про беглые буквы, коих в русском язхыке предостаточно. Слова, типа "вошь" и "вша" - как он справляется? Или по проще: "церковь" -> "церквей". Да хоть семигранный индекс, главное что бы искал правильно. А like справляется с такими? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:50 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvladНасколько триграммный индекс замедляет вставки ? Берем текст 64K, делим на 7,2 букв (среднее в русском слове) получаем ~ 9100 слов. Умножаем кол-во слов на 5 (среднее кол-во словоформ) и... - Дорогая переда, на Канатчиковую дачу... (далее близко по тексту Классика) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:51 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
afgmА like справляется с такими? А я тебе что сразу сказал, ась? ( тынц ) Без учета морфологии Русского Языка - называться FTS система НЕ может. Ибо она ни чем не лучше, чем like. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 00:55 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Di_LIneafgmА like справляется с такими? А я тебе что сразу сказал, ась? ( тынц ) Без учета морфологии Русского Языка - называться FTS система НЕ может. Ибо она ни чем не лучше, чем like. Ты даёшь тынц, в укор, что я тебя не читаю. Однако сам не читаешь. С пояснениями: afgmПоддержу, т.к. для многих задач (без учёта морфологии и индивидуального тюнинга FTS т.е. задач не требующих всех плюшек FTS ) простого like хватает. Его оптимизация (like-а и никого более) через триграмы творит чудеса. Сам лично гонял тесты на PG (именно like-а на триграммах) триграммы - ускорение поиска по like (и то не во всех случаях) и ничего более . similarity там довеском, и морфологию не учитывает. FTS - сосем иная тема, и предлагаю её не мешать в одну кучу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 01:13 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
__Avenger__Нужна либо поддержка, например, триграмного индексаЯ сам его руками не трогал, но могу предположить что: - это можно относительно легко сделать на базе наших B-tree индексов - это будет жутко тормозить вставки, апдейты и сборку мусора - сам индекс будет занимать гораздо больше места, чем обычный индекс по строке - скорость поиска далеко не всегда будет ожидаемо высокой afgmПодозреваю, что Влад знает ответы на эти вопросы, но хочет услышать их от просителей :)Не знает, но предполагает :) И - да - хочет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 01:38 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
afgmС пояснениями: Так и запишем: - Всё по прежнему уныло, сиро и убого, аки тарабарский. О чем и был первый мой вопрос. ( тынц ) Но ты жеж нечетатель... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 01:40 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
__Avenger__либо более тесная интеграция со sphinx, например как в PG тут Это чем-то принципиально отличается от твоей библиотеки ф-ций для 3-ки ? Говоря об интеграции, я имел в виду именно интеграцию, а не расширение с помошью UDF. От нативной поддержки в SQL до управления самим поисковым движком sphinx. Да, я тоже иногда люблю помечтать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 01:42 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Di_LIneО чем и был первый мой вопрос. ( тынц ) Это конечно интересный метод: отвечать на выдуманные тезисы, но, прошу, не скатывайся до rdb_dev тут ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 02:39 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
afgmЭто конечно интересный метод: отвечать на выдуманные тезисы... Дружок... Ответ на мой вопрос про "беглые буквы" - тру или фолс. И вся не долга. Решили эту проблему или нет. И я тебя не заставлял написать: " Сам лично гонял тесты на PG." Раз гонял тесты, то почему бы и не задать тебе такой элементарный вопрос? Ведь раз шпрехаешь по-русски, то далжОн и это про тестит, как наиболее часто встречающуюся особенность Русского Языка. А если не протестил, то кто тебе ССЗБ? Тебе не врезали по айцам: - А как там дела с словами-исключениями из Правил Русского Языка. Таких слов тоже предостаточно: Цыган на цыпочках... и далее во всех вариациях. И заметь - не размазали ровным слом ниже плинтуса вопросом: - А как обстоит дело со вновь заимствованными словами и их "русификацией"? Типа: "Окейно" и прочее разговорно-жаргонное словотворчество населения. - Так чёго кипешишь? Али чуешь, что пальцы дверкой прищемили тем вопросом? ;-) А вот твой метода - отвечать вопросом на вопрос. Но и в это ты не силен. PS: Ну знаю, по каким местам бить адептов FTS-тарабарских какбэ-систЭмс. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 04:08 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvlad__Avenger__либо более тесная интеграция со sphinx, например как в PG тут Это чем-то принципиально отличается от твоей библиотеки ф-ций для 3-ки ? Говоря об интеграции, я имел в виду именно интеграцию, а не расширение с помошью UDF. От нативной поддержки в SQL до управления самим поисковым движком sphinx. Да, я тоже иногда люблю помечтать :) Если это будет оформлено как плагин я только за. Мне кажется, что для работы со сфинкс большинству пользователей хватит функции, которая будет возвращать результирующий набор с данными. В моей реализации недостатки следующие: 1. Во первых она не на C. 2. В UDR я не могу вернуть набор с произвольным количеством столбцов. Т.е если я написал запрос для Sphinx Код: sql 1.
, то мне необходимо заренее объявить функцию, которая возращает нужный набор столбцов, например так: Код: sql 1. 2. 3. 4. 5. 6. 7.
Либо делать более универсальное решение, например такое: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
И потом вызывать, например так: Код: sql 1.
А хочется так: Код: sql 1.
И запрос сразу возвращает нужное количество полей с нужным типом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 08:58 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvlad__Avenger__Нужна либо поддержка, например, триграмного индексаЯ сам его руками не трогал, но могу предположить что: - это можно относительно легко сделать на базе наших B-tree индексов - это будет жутко тормозить вставки, апдейты и сборку мусора - сам индекс будет занимать гораздо больше места, чем обычный индекс по строке - скорость поиска далеко не всегда будет ожидаемо высокой Те, кому нужен этот индекс должны понимать и про большие накладные расходы на размер индекса, скорость вставки и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 09:00 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvladЯ сам его руками не трогал, но могу предположить что: - это можно относительно легко сделать на базе наших B-tree индексов - это будет жутко тормозить вставки, апдейты и сборку мусора - сам индекс будет занимать гораздо больше места, чем обычный индекс по строке - скорость поиска далеко не всегда будет ожидаемо высокой Было бы очень интересно, даже так: ОЧЕНЬ интересно. Как я себе вижу применение, что прежде всего справочник ассортимента с сопутствующими справочниками типа брендов, в свете пожеланий руководства расширить ассортимент на порядок (с 200 тыс наименований до пары миллионов). В силу того, что ассортимент, это не выписка первички, путь немного тормознется вставка, готовы мириться. Если это закачка ассортимента поставщика, то она пойдет отдельным тредом, скорее всего в непиковое время, тоже не вопрос, если будет идти дольше в два-три раза. "Жутко тормозить" - это сколько в "разах"? Место... ну а что место, решим "в железе", короче, тоже готовы мириться. Скорость поиска будет хромать? А почему? хотелось бы чуть более расширенную версию, для тех, кто "не совсем в теме". Морфология... ну а что морфология, решили навешиванием справочника синонимов на некоторые справочники и поиска тем же контайнингом и по синонимам тоже, может и топорно, но работает. хундай, хёндэ, ... hyundai, бош опять таки, находит. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 13:08 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, если делать на базе имеющихся b-tree индексов, то нужно понимать что - в индекс будет вставляеться не один ключ, а столько, сколько триграмм в индексируемой строке - эти триграммы могут быть в совершенно разных ветках индекса, т.е. операция затронет гораздо больше страниц и потребует больше random-io - то же самое при удалении из индекса - то же самое при поиске - придётся искать не один ключ, а столько, сколько триграмм в искомой строке Достаточно аргументов ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 13:15 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyОЧЕНЬ интересно.Никто не мешает прикинуть эффект - создай табличку с триграммами, поддерживай её триггерами на индексируемых полях, оцени что получится и нам расскажи ;) Это будет, конечно, грубая оценка сверху, но зато её можно быстро получить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 13:18 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvladДостаточно аргументов ? :)"смайлик чешет репу". :) hvladпотребует больше random-ioну на ссд мы уже перешли, СХД пока не осилили. hvladсоздай табличку с триграммами, поддерживай её триггерами на индексируемых полях, оцени что получится и нам расскажиЯ подумаю, точнее смигрирую на трешку (сейчас в процессе), и уже "там" прикину, полагаю, что сделаю. В первом приближении я понял о чем речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 13:45 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvladIvan_Pisarevsky, если делать на базе имеющихся b-tree индексов, то нужно понимать что - в индекс будет вставляеться не один ключ, а столько, сколько триграмм в индексируемой строке - эти триграммы могут быть в совершенно разных ветках индекса, т.е. операция затронет гораздо больше страниц и потребует больше random-io - то же самое при удалении из индекса - то же самое при поиске - придётся искать не один ключ, а столько, сколько триграмм в искомой строке Достаточно аргументов ? :) Я думаю последовательность примерно такая: Пусть есть текстовое поле. 1. Разбираем его на уникальные слова. 2. Добавляем новые слова в таблицу Words(word_id, word) 3. Добавляем новую связь в таблицу LINKS(object_fk, word_id), где object_fk - идентификатор текстового объекта. 4. Разбираем слово на триграммы. Добавляем новые триграммы в таблицу TRIGRAMS (TRIGRAM_ID, TRIGRAM) 5. Добавляем новую связь в таблицу TRG_LINKS(TRIGRAM_ID, word_id) Таблица Words и триграмм расти будут слабо, в процессе работы практически не будут меняться, потому-что набор слов ограничен. Количество триграмм будет меньше количества слов. (50000 максимум для любого кол-ва текстов, хоть миллиард слов) Ну и поиск достаточно простой. Основные затраты, только на хранение двух связей или 4 bigint. Т.е. на 1 000 000 записей - 8 000 000 байтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 13:51 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Сделал тест на 1000000 строк текстовых данных - 250 000 слов, 27000 триграмм. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 13:54 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
__Avenger__Сделал тест на 1000000 строк текстовых данных - 250 000 слов, 27000 триграмм.Самое главное опустил - кол-во связей ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 14:31 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Di_LIneДружок...Киса, ты меня с кем-то спутала Di_LIneОтвет на мой вопрос про "беглые буквы" - тру или фолс. И вся не долга. Решили эту проблему или нет. И я тебя не заставлял написать: " Сам лично гонял тесты на PG." Раз гонял тесты, то почему бы и не задать тебе такой элементарный вопрос? Ну так я и не писал, что гонял тесты FTS на PG. Если это намёк на криворукость разрабов PG и всё, что выходит из их кузницы аналогично по качеству, то нет, т.к. триграммы тупы и в этом их сила. Di_LIneВедь раз шпрехаешь по-русски, то далжОн и это про тестит, как наиболее часто встречающуюся особенность Русского Языка. А если не протестил, то кто тебе ССЗБ? Конкретно моя задача требует точного совпадения, т.е. быстрый like. В теории можно так настроить FTS, чтобы он и это мог, но в этом нет необходимости. Di_LIneТебе не врезали по айцам: - А как там дела с словами-исключениями из Правил Русского Языка. Таких слов тоже предостаточно: Цыган на цыпочках... и далее во всех вариациях. И заметь - не размазали ровным слом ниже плинтуса вопросом: - А как обстоит дело со вновь заимствованными словами и их "русификацией"? Типа: "Окейно" и прочее разговорно-жаргонное словотворчество населения. - Так чёго кипешишь? Али чуешь, что пальцы дверкой прищемили тем вопросом? ;-) А вот твой метода - отвечать вопросом на вопрос. Но и в это ты не силен. PS: Ну знаю, по каким местам бить адептов FTS-тарабарских какбэ-систЭмс. Я тебе про тираммы, а ты про репликацию. [spoiler] Насосы и Колеса ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 15:04 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvlad__Avenger__Сделал тест на 1000000 строк текстовых данных - 250 000 слов, 27000 триграмм.Самое главное опустил - кол-во связей trg_links 17 558 896 links = 9 972 536 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 15:15 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Рассуждения про длину идентификаторов В 3.0 максимальная длина имени поля/таблицы 31 символ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 15:22 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
__Avenger__Сделал тест на 1000000 строк текстовых данных - 250 000 слов, 27000 триграмм. - Хоспади и де они берут такое УГ?... Да 8 лет взад базовый словарь от Яндекса включал под 6 лямов широко употребительных слов (без морфологии). Без всяческих терминов мед, хим, пед и прочий "бред". afgmКиса, ты меня с кем-то спутала. Киса - мужского рода. Иди учи матчасть, дружок... [spoiler] Месье, же не манж па сис жур ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 15:23 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
hvladНикто не мешает прикинуть эффект... У меня уже несколько лет подобный подход живёт. В ручной имитации всего этого огорода изобрести новое сложно, и подход описан Сергеем Мереуцой на 2-й конференции. Но есть и плюсы - можно учесть специфику задачи. Например, нарезка блоба на слова/триграммы кешируется, что сильно экономит ресурсы. В сторону: заметил одну особенность, что position быстрее чем like '%xxx%' в FB, но почти не отличается по скорости в PG. Возможно есть что покурить в реализации самого like. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 15:25 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
__Avenger__1. Разбираем его на уникальные слова. 2. Добавляем новые слова в таблицу Words(word_id, word) 3. Добавляем новую связь в таблицу LINKS(object_fk, word_id), где object_fk - идентификатор текстового объекта. Слово "пайка": 1. пайка хлеба; 2. пайка радиодеталей. Как различать будешь? И таких слов очень много. Слово Degree. Яндекс.Толмачdegree [dɪˈgriː] сущ степень ж, градус м, уровень м, град м (extent, grade, level, hail) ступень ж (stage) звание ср, ранг м (title, rank) диплом м (diploma) образование ср (education) качество ср (quality) degree прил дипломный (diploma) Как это слово должно "искаться" в Honda XL250 Degree (официальное название модели)? PS: Для доказательства не верности теоремы достаточно одного примера. Но и 100500 мильёнов примеров - не доказывают верность теоремы. (где-то вычитанное, близко к тексту) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 16:03 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Di_LIne, тут никто не занимается FTS в твоём понимании. Уймись уже, плс ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 16:48 |
|
FB 4.0 Вопрос
|
|||
---|---|---|---|
#18+
Триграммы - всего-то навсего УГ от шинглов. Метод шинглов - известен с 1997 года. ( тынц ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 16:49 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561739]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 274ms |
total: | 428ms |
0 / 0 |