# Поиск сообщений об аренде мотобайков

## Контекст

Поиск в SQLite-базе (1.4M сообщений) текстов, связанных с арендой мотобайков/скутеров.
Тематика: аренда транспорта, права на вождение, инструкторы, трафик-полиция. База: Паттайя/Таиланд.

DB: `/Users/axisrow/Projects/tg_user_search/data/tg_search.db`

## Примеры целевых сообщений

Сообщения, которые нужно находить (живые вопросы из чатов):

> Друзья, добрый вечер. Поделитесь пожалуйста контактом профессионального инструктора по вождению в Паттайе. Буду очень признателен!

> Здравствуйте, как думаете реально машинку маленькую снять, не очень дорого?

> Хотел бы узнать, можно ли получить водительское удостоверение на байк и сколько времени и это займёт? Тайское удовольствие.

> Спасибо, буду знать. А куда можно сходить организованной группой? Или вообще не стоит таким заниматься? Просто надо какие-то планы строить) не 1 день же торчать в отеле) хотелось бы арендовать байк, но прав нет, много траффик полиции у вас?)

Ключевые признаки:
- Вопросы об аренде байка / скутера
- Права на вождение (получение, наличие)
- Инструктор по вождению
- Трафик-полиция, штрафы
- Цены на аренду

## SQL-запросы

### Запрос 1 — топ-каналы по мото-транспорту

```sql
SELECT c.title, COUNT(*) as cnt
FROM messages m
INNER JOIN (
  SELECT rowid FROM messages_fts
  WHERE messages_fts MATCH 'байк OR мотобайк OR мотоцикл OR скутер OR мопед'
) fts ON m.id = fts.rowid
LEFT JOIN channels c ON m.channel_id = c.channel_id
GROUP BY c.channel_id ORDER BY cnt DESC;
```

### Запрос 2 — люди, которые хотят арендовать (без рекламы)

Фильтры отсекают коммерческие объявления: рекламу обменников (bat_obmen), MDP Motorbikes, @MotorsBig и им подобных.

```sql
SELECT m.text, m.date, c.title
FROM messages m
INNER JOIN (
  SELECT rowid FROM messages_fts
  WHERE messages_fts MATCH '(байк OR мотобайк OR мотоцикл OR скутер) AND (аренда OR арендовать OR снять OR взять)'
) fts ON m.id = fts.rowid
LEFT JOIN channels c ON m.channel_id = c.channel_id
WHERE LENGTH(m.text) < 400
  AND m.text NOT LIKE '%t.me/%'
  AND m.text NOT LIKE '%бат за сутки%'
  AND m.text NOT LIKE '%Подберём%'
  AND m.text NOT LIKE '%ЗАКАЗАТЬ%'
  AND m.text NOT LIKE '%Предлагает в аренду%'
  AND m.text NOT LIKE '%Co.,Ltd%'
  AND m.text NOT LIKE '%@Motors%'
  AND m.text NOT LIKE '%Номер для связи%'
ORDER BY m.date DESC
LIMIT 200;
```

## Результаты (2026-03-07)

### Топ-каналы по мото-транспорту

| Канал | Сообщений |
|---|---|
| Паттайя Барахолка №1 | 2118 |
| Паттайя Чат обо всём! | 1679 |
| ПАТТАЙЯ ЧАТ ОБЩЕНИЕ | 540 |
| Паттайя Барахолка | 288 |
| Обмен валют Таиланд 2023-2026 | 258 |
| Паттайя на опыте | 176 |
| Seven Seas Condo Pattaya | 164 |

### Пользователи, ищущие аренду (запрос 2)

**Найдено: 332 сообщения** (после фильтрации рекламы)

Примеры:
- "На Ко Лане без прав можно снять байк?)"
- "Подскажите, где лучше снять байк? Чтобы не убитые были"
- "Добрый день! Подскажите как на Ко Лане арендовать байк без прав?"
- "в любом случае хочу арендовать байк и покататься... нет МВУ и категории А"
- "Здравствуйте подскажите в Паттайе где снять в аренду байк в пределах 3000 батт за 1 месяц"

## Заметки

- FTS5-индекс `messages_fts` (unicode61 tokenizer) работает корректно
- Основная тематика — Паттайя/Таиланд, аренда байков туристами
- Коммерческий шум: bat_obmen, MDP Motorbikes Co.,Ltd, @MotorsBig — все отсеяны в запросе 2
- Ограничение LENGTH < 400 хорошо отделяет живые вопросы от рекламных полотен
- Фильтр `NOT LIKE '%t.me/%'` убирает посты со ссылками (почти всегда реклама)
