Einführung
Tiny Tiny RSS (tt-rss) ist ein beliebter, selbst gehosteter Feed-Reader, den du sowohl mit MySQL, MariaDB als auch mit PostgreSQL betreiben kannst. Und die erweiterte Suche ist extrem hilfreich.
In diesem Artikel nehme ich die offizielle Dokumentation (Link unten) und erkläre die verschiedenen Keyword-Typen. Außerdem zeige ich dir, wie du mit Negation (-) und den automatischen AND-Verknüpfungen präzise Suchabfragen baust.
Die drei Keyword-Typen: Text, Feld, Datum
Eine Suchanfrage in tt-rss besteht aus einem oder mehreren Keywords. Die lassen sich in drei Kategorien einteilen - und das Beste: Diese Basics funktionieren sowohl mit MySQL, MariaDB als auch mit PostgreSQL .
Text-Keywords
Text-Keywords sind entweder einzelne Wörter wie ocean oder zusammengesetzte Phrasen in Anführungszeichen, z. B. "pacific ocean".
MySQL, MariaDB: Die Suche nutzt hier die MATCH() AGAINST()-Syntax mit IN BOOLEAN MODE - das erlaubt eine grundlegende Volltextsuche mit Wortstamm-Erkennung (kommt auf den verwendeten Parser an).
PostgreSQL: Hier kommt die deutlich mächtigere tsvector / tsquery-Volltextsuche zum Einsatz. Was die genau kann, schauen wir uns später in einem eigenen Abschnitt an.
Beispiele (funktionieren mit beiden Datenbanken):
ocean- findet Artikel mit dem Wort “ocean”."climate change"- findet die exakte Phrase.
Feld-Keywords
Mit Feld-Keywords kannst du gezielt nach bestimmten Attributen eines Artikels filtern. Diese Funktionalität istin beiden Datenbanken identisch - also kein Unterschied.
| Feld | Beispiel | Bedeutung |
|---|---|---|
star: | star:true / star:false | Nur sterne-markierte oder nicht markierte Artikel |
unread: | unread:true / unread:false | Nur ungelesene oder gelesene Artikel |
pub: | pub:true / pub:false | Nur veröffentlichte oder unveröffentlichte Artikel |
title: | title:"Hugo PaperMod" | Titel enthält den Teilstring (Substring-Match) |
author: | author:"John Doe" | Autor enthält den Teilstring |
note: | note:true / note:false / note:"wichtig" | Mit/ohne Notiz oder Notiz enthält Teilstring |
label: | label:true / label:false / label:"lesen" | Mit/ohne Label oder exaktes Label |
tag: | tag:true / tag:false / tag:"tech" | Mit/ohne Tag oder exaktes Tag |
Ein paar Beispiele:
star:true unread:false- Findet gelesene, sterne-markierte Artikel.title:"RSS" author:"admin"- Artikel mit “RSS” im Titel und “admin” als Autor.
Datums-Keywords
Datums-Keywords filtern nach dem Veröffentlichungs- oder Aktualisierungsdatum.Wichtig: Das Datum muss einen festen Tag repräsentieren - Bereiche wie @"last week" oder @2024 sind nicht erlaubt.
Auch das funktioniertbei beiden Datenbanken gleich.
Erlaubte Formate:
| Format | Beispiel |
|---|---|
@YYYY-MM-DD | @2025-10-28 |
@YYYY/MM/DD | @2025/10/28 |
@DD/MM/YYYY | @28/10/2025 |
@"D MMM YYYY" | @"28 Oct 2025" |
@"Month DD" | @"October 28" (aktuelles Jahr) |
| Relative Angaben | @today, @yesterday, @"2 days ago", @"last Monday" |
Beispiele:
@today unread:true- Heutige ungelesene Artikel.@"2026-08-31" title:"Linux"- Artikel vom 31. August 2026 mit “Linux” im Titel.
Negation mit - (Minus)
Du kannst jedes Keyword mit einem vorangestellten Minuszeichen (-) negieren. Das klappt bei allen drei Keyword-Typen -und zwar in beiden Datenbanken .
Ein paar Beispiele:
-unwanted- schließt Artikel mit dem Wort “unwanted” aus.-"exact phrase"- schließt die exakte Phrase aus.-title:"spam"- schließt Artikel mit “spam” im Titel aus.-tag:"newsletter"- schließt Artikel mit dem Tag “newsletter” aus.-@yesterday- schließt Artikel von gestern aus.
Automatische AND-Verknüpfung
Ein wichtiges Detail: Zwischen allen Keywords wird automatisch ein logisches AND angewandt. Du musst also kein AND schreiben. Das macht die Suche schön intuitiv - aber du solltest dir bewusst sein, dass OR-Verknüpfungen nicht direkt unterstützt werden.
Schauen wir uns ein kombiniertes Beispiel an:
ocean "tree flower" note:true -title:"orange color"
Das bedeutet übersetzt:
- Enthält das Wort ocean
UND - Enthält die Phrase tree flower
UND - Hat eine Notiz
UND - Hat nicht den Teilstring “orange color” im Titel.
PostgreSQL-spezifische Erweiterungen
So, jetzt kommen wir zu den echten Unterschieden . Die folgenden Features gibt es nur, wenn du PostgreSQL als Datenbank verwendest . Sie machen die Suche in tt-rss nochmal richtig scharf und leistungsfähig.
PostgreSQL - Wortstamm-Reduzierung (Stemming)
Während MySQL, MariaDB nur eine recht einfache Wortstamm-Erkennung bietet (und das auch noch abhängig vom Parser), nutzt PostgreSQL die eingebaute Volltextsuche mit tsvector und tsquery. Das bringt automatischStemming mit.
Was heißt das für dich? Eine Suche nach swim findet auch Artikel mit swimming, swam oder swum. Oder run findet auch running oder ran.
Beispiel:
swim- trifft auf Artikel mit “swimming”, “swimmer”, “swam” etc. zu.
PostgreSQL - Logische Operatoren in der Volltextsuche
PostgreSQL erlaubt innerhalb der Text-Keywords auch die Verwendung vonlogischen Operatoren wie & (UND), | (ODER) und ! (NICHT) - abernur innerhalb eines Text-Keywords, wohlgemerkt.
Schau dir diese Beispiele an:
"cats & dogs"- findet Artikel, die sowohl “cats” als auch “dogs” enthalten (nicht nur die Phrase)."cats | dogs"- findet Artikel mit “cats” ODER “dogs”."cats ! dogs"- findet Artikel mit “cats”, aber ohne “dogs”.
Diese Operatoren funktionieren ausschließlich in PostgreSQL und nur innerhalb von Anführungszeichen bei Text-Keywords. Sie ersetzen nicht die globale Negation (
-), sondern sind eine zusätzliche Feinjustierung auf Wortebene.
PostgreSQL - bessere Performance bei großen Feed-Mengen
PostgreSQL hat eine native und hochoptimierte Volltextsuche mit GIN-Indizes. Das bedeutet: Wenn du viele Feeds mit langer Historie verwaltest, skaliert die Suche in tt-rss deutlich besser als mit MySQL oder MariaDB. Gerade bei tausenden von Artikeln merkst du den Unterschied richtig.
Wenn du also viel Wert auf Geschwindigkeit legst oder ein richtiges Feed-Archiv aufbauen möchtest, ist PostgreSQL auf jeden Fall die bessere Wahl.
Praxisbeispiele
Hier habe ich dir ein paar nützliche Suchanfragen für den Alltag zusammengestellt - die meisten gehen DB-unabhängig, die PostgreSQL-spezifischen habe ich extra markiert.
| Ziel | Suchanfrage | Nur PostgreSQL? |
|---|---|---|
| Ungelesene Artikel mit dem Wort “KI” | unread:true KI | Nein |
| Gelesene, aber nicht markierte Artikel von heute | star:false @today unread:false | Nein |
| Artikel mit Label “wichtig” und Note | label:"wichtig" note:true | Nein |
| Artikel ohne Tag, aber mit Autor “Jane” | tag:false author:"Jane" | Nein |
| Alles außer Artikel von gestern | -@yesterday | Nein |
| Artikel mit “Linux” oder “Unix” im Titel | title:"Linux | Unix" | Ja |
| Artikel mit “Datenbank” aber ohne “MySQL, MariaDB” | "database ! mysql" | Ja |
Fazit
Die Suchfunktion von Tiny Tiny RSS ist richtig flexibel und mächtig - ganz egal, ob du MySQL, MariaDB oder PostgreSQL verwendest. Die grundlegenden Keyword-Typen, die Negation und die automatische AND-Verknüpfung stehen dir in beiden Systemen zur Verfügung.
Aber wenn du das volle Potenzial ausschöpfen möchtest - mit Wortstamm-Reduzierung, logischen Operatoren auf Wortebene und besserer Performance - dann istPostgreSQL ganz klar die bessere Wahl. Die zusätzlichen Features machen die Suche nicht nur präziser, sondern auch spürbar schneller.
Hinweis: Dieser Artikel basiert auf der alten offiziellen tt-rss Dokumentation unter tt-rss.github.io. Es gibt einen Nachfolger Fork, der hier weiter gepflegt wird tt-rss FORK
Weitere Artikel hier zu ttrss