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.

FeldBeispielBedeutung
star:star:true / star:falseNur sterne-markierte oder nicht markierte Artikel
unread:unread:true / unread:falseNur ungelesene oder gelesene Artikel
pub:pub:true / pub:falseNur 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:

FormatBeispiel
@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.

ZielSuchanfrageNur PostgreSQL?
Ungelesene Artikel mit dem Wort “KI”unread:true KINein
Gelesene, aber nicht markierte Artikel von heutestar:false @today unread:falseNein
Artikel mit Label “wichtig” und Notelabel:"wichtig" note:trueNein
Artikel ohne Tag, aber mit Autor “Jane”tag:false author:"Jane"Nein
Alles außer Artikel von gestern-@yesterdayNein
Artikel mit “Linux” oder “Unix” im Titeltitle:"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