[sisyphus] postgresql index row

Igor Zubkov igor.zubkov на gmail.com
Пт Ноя 12 16:06:59 UTC 2010


2010/11/12 Alexey I. Froloff:
> On Fri, Nov 12, 2010 at 04:05:03AM +0200, Igor Zubkov wrote:
>> ==  AddIndexOnChangelogtext: migrating ========================================
>> -- add_index(:changelogs, :changelogtext)
> Занахрена?

Вот что бы такой запрос к БД работал быстро, а не как сейчас...
ree-1.8.7-2010.02 > Changelog.where('changelogtext LIKE \'%CVE%\'').count
 => 4288
ree-1.8.7-2010.02 >

2010/11/12 Ivan Fedorov:
> Igor Zubkov writes:
>> Hi!
>>
>> Никто не сталкивался вот с таким?
>>
>> ==  AddIndexOnChangelogtext: migrating ========================================
>> -- add_index(:changelogs, :changelogtext)
> Ну во первых и впрямь, "а нахрена?!".

Для быстрого поиска.

> А во вторых оно всё равно не будет хорошо работать. Если вам нужен поиск
> по тексту - то надо пользоваться FTS движками. В PostgreSQL например
> встроен tsearch2. Из отдельных - Sphinx весьма неплох, да и настроить не
> имея опыта его проще чем tsearch2.

Ммм... А Sphinx умеет правильно работать с бинарными полями? Просто
это самое поле ещё и BINARY в postgresql у меня.

> А обычные btree индексы нормально искать по тексту всё равно не
> позволят. А если нужна проверка на уникальность, то там и индекса от
> какого-нить хэша хватит.

2010/11/12 Денис Смирнов:
> On Fri, Nov 12, 2010 at 04:05:03AM +0200, Igor Zubkov wrote:
>
> IZ> Никто не сталкивался вот с таким?
>
> А есть хоть какой-то смысл от _индекса_ по полю немеряного размера?

Понятия не имею. :)

> Даже если бы это работало -- это было бы все равно ужасно. Опиши какую
> задачу ты хочешь решить этим странным действием, и тогда тебе подскажут
> как ее решить красиво.

Дано много-примного записей из changelog'ов пакетов. Примерно:
ree-1.8.7-2010.02 >   Changelog.count(:all)
 => 690859
ree-1.8.7-2010.02 >
Столько :)

Охота вытаскивать из этой кучи только те в которых есть упоминание о
CVE. Без индекса это просто медленно. Индекс не делается.

Вот думаю, а не воткнуть ли туда sphinx? Или как бы ещё решить такую задачку.

-- 
Igor Zubkov
http://hi.im/ice


Подробная информация о списке рассылки Sisyphus