|
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?fid=40&msg=39394771&tid=1561739]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 277ms |
total: | 437ms |
0 / 0 |