Пару топиков выше я писал, что w1,w2 - это вес слова в документе с ID
идентификатором.
Я получил ответы на все свои воросы. Спасибо всем за ответы.
Можно более конкретно, вы же люди с опытом. То что я описал на php сделать реально или лучше перейти на C++? Так как я понимаю группировать и сортировать подобные индексы придется средствами языка, а не средствами самой Mysql. Или может лучше не заморачиваться и делать простой индекс
word1, id1, w1
word1, id2, w2
word1, id3, w1
word2, id1, w3
...
Получается избыточный индекс, к тому же еще и не отсортированный.
weight - это вес слова в документе.
А как насчет вопроса №2?
Не совсем понятно, пока не разглядишь чего?
У меня 3 вопроса по теме:
1) При создании индекса (id_word, id_obj, weight) размер индекса становится больше, чем индексируемый текст, на 300 кб упакованного текста приходится 1.5Мб индекса , где id_word - уникальное 8 байтное число, являющееся результатом хеширования слова. Как можно уменьшить это число, например, до 4 байт или даже меньше? Кажется, где-то на форуме itman писал, что у него идентификаторы слов размером 4 байта. Какую для этих целей выбрать хеш-функцию? Я делаю с помощью CRC32.
2) База Mysql. Можно ли создать в ней индекс такого типа:
id_word, {id_obj,weight}{id_obj,weight}...
где {}{}... - одно поле, где данные представлены в бинарном виде (blob-поле).
Вернее, вопрос не в том как создать, а как это можно использовать средствами MySQL и PHP при выборке и группировке.
В PHP Inside #7 2004 упоминалось, что в MnoGOSearch есть blob-режим, и что в нем используется именно такая схема, если я правильно понял. Как там это реализуется?
3)Где лучше хранить заархивированные тектсы в БД или на жестком? В упакованном виде они весят ~50b - 1kb. Поисковик локальный.