<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.synology-forum.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Archiv%3AW%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen</id>
	<title>Archiv:Wörterbücher für Volltextsuche mit PostgreSQL erstellen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.synology-forum.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Archiv%3AW%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen"/>
	<link rel="alternate" type="text/html" href="https://www.synology-forum.de/wiki/index.php?title=Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&amp;action=history"/>
	<updated>2026-05-06T23:54:21Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Synology Wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://www.synology-forum.de/wiki/index.php?title=Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&amp;diff=10558&amp;oldid=prev</id>
		<title>Tommes: Tommes verschob die Seite Wörterbücher für Volltextsuche mit PostgreSQL erstellen nach Archiv:Wörterbücher für Volltextsuche mit PostgreSQL erstellen</title>
		<link rel="alternate" type="text/html" href="https://www.synology-forum.de/wiki/index.php?title=Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&amp;diff=10558&amp;oldid=prev"/>
		<updated>2025-03-15T07:14:09Z</updated>

		<summary type="html">&lt;p&gt;Tommes verschob die Seite &lt;a href=&quot;/wiki/W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&quot; class=&quot;mw-redirect&quot; title=&quot;Wörterbücher für Volltextsuche mit PostgreSQL erstellen&quot;&gt;Wörterbücher für Volltextsuche mit PostgreSQL erstellen&lt;/a&gt; nach &lt;a href=&quot;/wiki/Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&quot; title=&quot;Archiv:Wörterbücher für Volltextsuche mit PostgreSQL erstellen&quot;&gt;Archiv:Wörterbücher für Volltextsuche mit PostgreSQL erstellen&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 15. März 2025, 07:14 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Tommes</name></author>
	</entry>
	<entry>
		<id>https://www.synology-forum.de/wiki/index.php?title=Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&amp;diff=830&amp;oldid=prev</id>
		<title>imported&gt;EL Duderino: overflow</title>
		<link rel="alternate" type="text/html" href="https://www.synology-forum.de/wiki/index.php?title=Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&amp;diff=830&amp;oldid=prev"/>
		<updated>2015-12-30T10:19:54Z</updated>

		<summary type="html">&lt;p&gt;overflow&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 30. Dezember 2015, 10:19 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Zeile 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Genauer gesagt wird eine Möglichkeit vorgestellt, PostgreSQL-Wörterbücher für Volltextsuche mit der ispell-Vorlage anzulegen. Erster Schritt ist das Laden und Vorbereiten von [[wikipedia:de:Hunspell|hunspell]]-Wörterbüchern. Basis des folgenden Shell-Skripts ist [http://dba.stackexchange.com/a/109230 hier].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Genauer gesagt wird eine Möglichkeit vorgestellt, PostgreSQL-Wörterbücher für Volltextsuche mit der ispell-Vorlage anzulegen. Erster Schritt ist das Laden und Vorbereiten von [[wikipedia:de:Hunspell|hunspell]]-Wörterbüchern. Basis des folgenden Shell-Skripts ist [http://dba.stackexchange.com/a/109230 hier].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;style=&quot;overflow-x: scroll;&quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/bin/sh&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/bin/sh&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l47&quot;&gt;Zeile 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 47:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dieses Skript lädt deutsche und englische Wörterbücher und bereitet sie für PostgreSQL vor. Das Laden kann etwas länger dauern, da die Dateien bis zu 10 MB gross und der Server etwas träge sein kann. Für die deutschen Wörterbücher ist eine Recodierung von &amp;lt;code&amp;gt;latin1&amp;lt;/code&amp;gt; zu &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; nötig. Da Synology leider &amp;lt;code&amp;gt;iconv&amp;lt;/code&amp;gt; nicht mitliefert, wird das im Skript von dem Progrämmchen &amp;#039;&amp;#039;piconv&amp;#039;&amp;#039; übernommen, das z.B. als einfaches python-Skript implementiert werden kann:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dieses Skript lädt deutsche und englische Wörterbücher und bereitet sie für PostgreSQL vor. Das Laden kann etwas länger dauern, da die Dateien bis zu 10 MB gross und der Server etwas träge sein kann. Für die deutschen Wörterbücher ist eine Recodierung von &amp;lt;code&amp;gt;latin1&amp;lt;/code&amp;gt; zu &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; nötig. Da Synology leider &amp;lt;code&amp;gt;iconv&amp;lt;/code&amp;gt; nicht mitliefert, wird das im Skript von dem Progrämmchen &amp;#039;&amp;#039;piconv&amp;#039;&amp;#039; übernommen, das z.B. als einfaches python-Skript implementiert werden kann:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;style=&quot;overflow-x: scroll;&quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/python&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l68&quot;&gt;Zeile 68:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 68:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In PostgreSQL müssen dann in der Datenbank, in der die Wörterbücher installiert werden sollen, jeweils die folgenden Kommandos ausgeführt werden ([http://www.postgresql.org/docs/current/static/textsearch-configuration.html Quelle]):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In PostgreSQL müssen dann in der Datenbank, in der die Wörterbücher installiert werden sollen, jeweils die folgenden Kommandos ausgeführt werden ([http://www.postgresql.org/docs/current/static/textsearch-configuration.html Quelle]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;style=&quot;overflow-x: scroll;&quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--english&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--english&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CREATE TEXT SEARCH DICTIONARY ispell_en_us (template  = ispell, dictfile = en_us, afffile = en_us, stopwords = english);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CREATE TEXT SEARCH DICTIONARY ispell_en_us (template  = ispell, dictfile = en_us, afffile = en_us, stopwords = english);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;EL Duderino</name></author>
	</entry>
	<entry>
		<id>https://www.synology-forum.de/wiki/index.php?title=Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&amp;diff=6215&amp;oldid=prev</id>
		<title>imported&gt;EL Duderino: Erste Version</title>
		<link rel="alternate" type="text/html" href="https://www.synology-forum.de/wiki/index.php?title=Archiv:W%C3%B6rterb%C3%BCcher_f%C3%BCr_Volltextsuche_mit_PostgreSQL_erstellen&amp;diff=6215&amp;oldid=prev"/>
		<updated>2015-12-30T10:13:56Z</updated>

		<summary type="html">&lt;p&gt;Erste Version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Einleitung ==&lt;br /&gt;
Die PostgreSQL-Datenbank bietet eine recht ausgefeilte Unterstützung für Volltextsuchen ([http://www.postgresql.org/docs/current/static/textsearch.html Quelle]). Leider liefert Synology keine Konfigurationen mit, die eine nichttriviale Abbildung auf [[wikipedia:de:Lexem|Lexem]]e ermöglichten.&lt;br /&gt;
Abhilfe ist möglich und Thema dieses Artikels.&lt;br /&gt;
== Laden von hunspell-Wörterbüchern ==&lt;br /&gt;
Genauer gesagt wird eine Möglichkeit vorgestellt, PostgreSQL-Wörterbücher für Volltextsuche mit der ispell-Vorlage anzulegen. Erster Schritt ist das Laden und Vorbereiten von [[wikipedia:de:Hunspell|hunspell]]-Wörterbüchern. Basis des folgenden Shell-Skripts ist [http://dba.stackexchange.com/a/109230 hier].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
BASE=http://src.chromium.org/svn/trunk/deps/third_party/hunspell_dictionaries/&lt;br /&gt;
cd /usr/share/postgresql/tsearch_data&lt;br /&gt;
&lt;br /&gt;
if [ ! -e  en_us.dict -o ! -e en_us.affix ]; then&lt;br /&gt;
	wget ${BASE}en_US.dic&lt;br /&gt;
	wget ${BASE}en_US.dic_delta&lt;br /&gt;
	wget ${BASE}en_US.aff -O en_us.affix&lt;br /&gt;
&lt;br /&gt;
	# Remove first line&lt;br /&gt;
	sed -i 1d en_US.dic&lt;br /&gt;
&lt;br /&gt;
	# Concat the dic and dic_delta, sort alphabetically&lt;br /&gt;
	# and remove the leading blank line (leaves the ending newline intact)&lt;br /&gt;
	cat en_US.dic en_US.dic_delta | sort &amp;gt; en_us.dict&lt;br /&gt;
	sed -i 1d en_us.dict&lt;br /&gt;
&lt;br /&gt;
	# clean up&lt;br /&gt;
	rm en_US*&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ ! -e de_de.dict -o ! -e de_de.affix ]; then&lt;br /&gt;
	curl ${BASE}de_DE_neu.dic | piconv -f latin1| sed 1,2d &amp;gt; de_DE_neu.dic #remove first two lines&lt;br /&gt;
	curl ${BASE}de_DE_neu.dic_delta | piconv -f latin1 &amp;gt; de_DE_neu.dic_delta&lt;br /&gt;
	curl ${BASE}de_DE_neu.aff | piconv -f latin1 | sed 1s/ISO8859-1/UTF-8/ &amp;gt; de_de.affix&lt;br /&gt;
&lt;br /&gt;
	# Concat the dic and dic_delta, sort alphabetically&lt;br /&gt;
	# and remove the leading blank line (leaves the ending newline intact)&lt;br /&gt;
	cat de_DE_neu.dic de_DE_neu.dic_delta | sort| sed 1d &amp;gt; de_de.dict&lt;br /&gt;
&lt;br /&gt;
	# clean up&lt;br /&gt;
	rm de_DE_neu*&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Set permissions&lt;br /&gt;
chown -R postgres:postgres *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Skript lädt deutsche und englische Wörterbücher und bereitet sie für PostgreSQL vor. Das Laden kann etwas länger dauern, da die Dateien bis zu 10 MB gross und der Server etwas träge sein kann. Für die deutschen Wörterbücher ist eine Recodierung von &amp;lt;code&amp;gt;latin1&amp;lt;/code&amp;gt; zu &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; nötig. Da Synology leider &amp;lt;code&amp;gt;iconv&amp;lt;/code&amp;gt; nicht mitliefert, wird das im Skript von dem Progrämmchen &amp;#039;&amp;#039;piconv&amp;#039;&amp;#039; übernommen, das z.B. als einfaches python-Skript implementiert werden kann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import fileinput&lt;br /&gt;
import argparse&lt;br /&gt;
&lt;br /&gt;
parser = argparse.ArgumentParser()&lt;br /&gt;
&lt;br /&gt;
parser.add_argument(&amp;#039;files&amp;#039;, nargs=&amp;#039;*&amp;#039;, help=&amp;#039;list of files. If empty, reads stdin. Also reads stdin if &amp;quot;-&amp;quot;  is given as filename&amp;#039;)&lt;br /&gt;
parser.add_argument(&amp;quot;-f&amp;quot;, &amp;quot;--from&amp;quot;, dest=&amp;#039;enc_from&amp;#039;, help=&amp;quot;encoding of old file(s)&amp;quot;, required=True)&lt;br /&gt;
parser.add_argument(&amp;quot;-t&amp;quot;, &amp;quot;--to&amp;quot;, help=&amp;quot;encoding of new file&amp;quot;, default=&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
for line in fileinput.input(args.files):&lt;br /&gt;
	print(line.decode(args.enc_from).encode(args.to), end=&amp;#039;&amp;#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation in PostgreSQL ==&lt;br /&gt;
In PostgreSQL müssen dann in der Datenbank, in der die Wörterbücher installiert werden sollen, jeweils die folgenden Kommandos ausgeführt werden ([http://www.postgresql.org/docs/current/static/textsearch-configuration.html Quelle]):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--english&lt;br /&gt;
CREATE TEXT SEARCH DICTIONARY ispell_en_us (template  = ispell, dictfile = en_us, afffile = en_us, stopwords = english);&lt;br /&gt;
&lt;br /&gt;
CREATE TEXT SEARCH CONFIGURATION english (COPY = pg_catalog.simple);&lt;br /&gt;
ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH ispell_en_us, pg_catalog.simple;&lt;br /&gt;
&lt;br /&gt;
--german&lt;br /&gt;
CREATE TEXT SEARCH DICTIONARY ispell_de_de (template  = ispell, dictfile = de_de, afffile = de_de, stopwords = german);&lt;br /&gt;
&lt;br /&gt;
CREATE TEXT SEARCH CONFIGURATION german (COPY = pg_catalog.simple);&lt;br /&gt;
ALTER TEXT SEARCH CONFIGURATION german ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH ispell_de_de, pg_catalog.simple;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollen die Wörterbücher z.B. in die Datenbank &amp;#039;&amp;#039;postgres&amp;#039;&amp;#039; installiert werden, kommt man mit von der Shell mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
psql -U admin postgres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
in den passenden SQL-Interpreter.&lt;/div&gt;</summary>
		<author><name>imported&gt;EL Duderino</name></author>
	</entry>
</feed>