File: Zend_Search_Lucene-QueryLanguage.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (595 lines) | stat: -rw-r--r-- 22,520 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.search.lucene.query-language">
    <title>Abfragesprache</title>

    <para>
        Java Lucene und <classname>Zend_Search_Lucene</classname> bieten sehr mächtige
        Abfragesprachen.
    </para>

    <para>
        Diese Sprachen sind großteils die selben mit ein paar kleineren Unterschieden welche
        anbei erklärt werden.
    </para>

    <para>
        Die komplette Java Lucene Syntax Dokumentation der Abfragesprache kann
        <ulink url="http://lucene.apache.org/java/2_3_0/queryparsersyntax.html">hier</ulink>
        gefunden werden.
    </para>

    <sect2 id="zend.search.lucene.query-language.terms">
        <title>Ausdrücke</title>

        <para>
            Eine Abfrage wird in Ausdrücke und Operatoren zerteilt. Es gibt drei Arten von
            Ausdrücken: Einzelne Ausdrücke, Phrasen und Unterabfragen.
        </para>

        <para>
            Ein einzelner Ausdruck ist ein einzelnes Wort wie "Test" oder "Hallo".
        </para>

        <para>
            Eine Phrase ist eine Gruppe von Wörtern die von doppelten Hochkommata umgeben sind wie
            "Hallo Dolly".
        </para>

        <para>
            Eine Unterabfrage ist eine Abfrage die von Klammern umgeben ist wie "(Hallo Dolly)".
        </para>

        <para>
            Mehrere Ausdrücke können mithilfe eines boolschen Operators miteinander kombiniert
            werden um komplexere Abfragen zu formen (siehe anbei).
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.fields">
        <title>Felder</title>

        <para>
            Lucene unterstützt Felder von Daten. Wenn eine Suche durchgeführt wird kann man entweder
            ein Feld spezifizieren, oder ein Standardfeld verwenden. Der Name des Feldes hängt von
            den indizierten Daten ab und das Standardfeld wird durch aktuelle Einstellungen
            definiert.
        </para>

        <para>
            Der erste und größte Unterschied zu Java Lucene ist der das Ausdrücke standardmäßig
            über <emphasis>alle Felder</emphasis> gesucht werden.
        </para>

        <para>
            Es gibt zwei statische Methoden in der <classname>Zend_Search_Lucene</classname> Klasse
            welche dem Entwickler das Konfigurieren dieser Einstellungen erlauben:
        </para>

        <programlisting language="php"><![CDATA[
$defaultSearchField = Zend_Search_Lucene::getDefaultSearchField();
...
Zend_Search_Lucene::setDefaultSearchField('contents');
]]></programlisting>

        <para>
            Der <constant>NULL</constant> Wert bedeutet, das die Suche über alle Felder durchgeführt
            wird. Das ist die Standardeinstellung.
        </para>

        <para>
            Es können spezielle Felder gesucht werden indem der Feldname gefolgt von einem
            Doppelpunkt ":" angegeben wird, gefolgt von dem Begriff nach dem gesucht wird.
        </para>

        <para>
            Als Beispiel nehmen wir an das ein Lucene Index zwei Felder enthält - title und text -
            text ist das Standardfeld. Wenn man das "Der richtige Weg" benannte Dokument finden will
            welches den Text "gehe nicht diesen Weg" enthält, geht das mit:
        </para>

        <programlisting language="querystring"><![CDATA[
title:"Der richtige Weg" AND text:go
]]></programlisting>

        <para>
            oder
        </para>

        <programlisting language="querystring"><![CDATA[
title:"Mach es richtig" AND go
]]></programlisting>

        <para>
            Weil "text" das Standardfeld ist, wird der Feld Indikator nicht benötigt.
        </para>

        <para>
            Beachte: Das Feld nur nur für den Ausdruck, die Phrase oder die Unterabfrage gültig die
            direkt danach folgt, sodas die Abfrage
        </para>

        <programlisting language="querystring"><![CDATA[
title:Mach es richtig
]]></programlisting>

        <para>
            nur "Mach" im title Feld finden wird. Es findet "es" und "richtig" im Standardfeld (wenn
            das Standardfeld gesetzt ist) oder in allen indizierten Felder (wenn das Standardfeld
            auf <constant>NULL</constant> gesetzt ist).
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.wildcard">
        <title>Wildcards</title>

        <para>
            Lucene unterstützt Einzelzeichen und Mehrfachzeichen Suchen mit Wildcards in einzelnen
            Ausdrücken (aber nicht innerhalb von Phrasenabfragen).
        </para>

        <para>
            Um eine Einzelzeichen Wildcardsuche durchzuführen kann das "?" Zeichen verwendet werden.
        </para>

        <para>
            Um eine Mehrzeichen Wildcardsuche durchzuführen kann das "*" Zeichen verwendet werden.
        </para>

        <para>
            Die Einzelzeichen Wildcardsuche schucht nach Strings die dem Begriff entsprechen wobei
            das "?" durch ein beliebiges einzelnes Zeichen ersetzt wird. Um, zum Beispiel, nach
            "Text" oder "Test" zu suchen kann die folgende Suche verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
Te?t
]]></programlisting>

        <para>
            Mehrzeichen Wildcardsuche sucht nach 0 oder mehr Zeichen wenn Strings nach passenden
            Begriffen sucht. Um, zum Beispiel, nach Test, Tests oder Tester zu suchen, kann die
            folgende Suche verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
Test*
]]></programlisting>

        <para>
            Es können "?", "*" oder beide an jeder Stelle des Ausdrucks verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
*schrei?t*
]]></programlisting>

        <para>
            Sucht nach "schreibt", "schreibtisch", "beschreibt", "schreist" und so weiter.
        </para>

        <para>
            Beginnend mit ZF 1.7.7 benötigen Wildcard Präfixe einen nicht-Wildcard Präfix. Die
            standardmäßige Länge des Präfixes ist 3 (wie in Java Lucene). Die Ausdrücke
            "*", "te?t", "*wr?t*" werden also eine Exception werfen

            <footnote>
                <para>
                    Es ist zu beachten das es nicht zu einer
                    <classname>Zend_Search_Lucene_Search_QueryParserException</classname> kommt,
                    sondern zu einer <classname>Zend_Search_Lucene_Exception</classname>. Sie wird
                    während dem Umschreiben der Abfrage geworfen.
                </para>
            </footnote>.
        </para>

        <para>
            Das kann durch Verwendung der Methoden
            <methodname>Zend_Search_Lucene_Search_Query_Wildcard::getMinPrefixLength()</methodname>
            und
            <methodname>Zend_Search_Lucene_Search_Query_Wildcard::setMinPrefixLength()</methodname>
            geändert werden.
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.modifiers">
        <title>Ausdrücke verändern</title>

        <para>
            Lucene unterstützt die Veränderung von Abfrageausdrücken und bietet damit ein beites
            Spektrum von Suchoptionen.
        </para>

        <para>
            Der "~" Modifikator kann für verwendet werden um eine annähernde Suche auf Phrasen oder
            Fuzzy Suchen für individuelle Ausdrücke durchzuführen.
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.range">
        <title>Bereichs Suchen</title>

        <para>
            Bereichsabfragen erlauben es Entwicklern passende Dokumente zu finden deren Werte der
            Felder zwischen der unteren und oberen Grenze sind die durch die Bereichsabfrage
            spezifiziert wurden. Bereichsabfragen können inklusive oder exklusive der oberen und
            unteren Grenze sein. Sortierungen werden lexikalisch durchgeführt.
        </para>

        <programlisting language="querystring"><![CDATA[
mod_date:[20020101 TO 20030101]
]]></programlisting>

        <para>
            Das wird Dokumente finden dessen lod_date Felder Werte zwischen 20020101 und 20030101
            inklusive haben. Es ist zu beachten das Bereichsabfragen nicht für Datumsfelder
            reserviert sind. Bereichsabfragen können auch mit nicht-datums Felder verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
title:{Aida TO Carmen}
]]></programlisting>

        <para>
            Das wird alle Dokumente finden dessen Titel zwischen Aida und Carmen sortiert sind,
            aber ohne Aida und Carmen.
        </para>

        <para>
            Bereichsabfragen inklusive, werden durch eine eckige Klammer abgegrenzt.
            Bereichsabfragen exklusive werden durch geschlungene Klammern abgegrenzt.
        </para>

        <para>
            Wenn kein Feld spezifiziert wurde sucht <classname>Zend_Search_Lucene</classname>
            standardmäßig nach spezifizierten Intervallen in allen Feldern.
        </para>

        <programlisting language="querystring"><![CDATA[
{Aida TO Carmen}
]]></programlisting>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.fuzzy">
        <title>Fuzzy Suchen</title>

        <para>
            <classname>Zend_Search_Lucene</classname> unterstützt, genauso wie Java Lucene, die
            Fuzzy Suche basierend auf der Levenshtein Distanz oder dem Edit Algorithmus. Um eine
            Fuzzy Suche durchzuführen muß das Tilde Symbol "~", am Ende eines einzelnen Wortbegriffs
            verwendet werden. Um zum Beispiel nach einem Begriff zu suchen der in der Aussprache
            ähnlich zu "Raum" ist kann die folgende Fuzzy Suche verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
roam~
]]></programlisting>

        <para>
            Diese Suche wird Begriffe wie "Baum" und "Saum" finden. Zusätzliche (optionale)
            Parameter können die benötigte Ähnlichkeit spezifizieren. Der Wert muß zwischen 0 und 1
            sein. Mit einem Wert näher bei 1 werden nur Begriffe mit einer höheren Warscheinlichkeit
            gefunden. Zum Beispiel:
        </para>

        <programlisting language="querystring"><![CDATA[
roam~0.8
]]></programlisting>

        <para>
            Der verwendete Standardwert wenn der Parameter nicht angegeben wurde ist 0.5.
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.matched-terms-limitations">
        <title>Einschränkung passender Ausdrücke</title>

        <para>
            Wildcard, Bereichs- und Fuzzy Suchabfragen können bei zu vielen Ausdrücken passen.
            Das kann die Geschwindigkeit der Suche sehr stark verlangsamen.
        </para>

        <para>
            Deshalb setzt <classname>Zend_Search_Lucene</classname> ein Limit der passenden
            Ausdrücke pro Abfrage (Unterabfrage). Dieses Limit kann durch Verwendung der Methoden
            <methodname>Zend_Search_Lucene::getTermsPerQueryLimit()</methodname> und
            <methodname>Zend_Search_Lucene::setTermsPerQueryLimit($limit)</methodname> empfangen und
            gesetzt werden.
        </para>

        <para>
            Das standardmäßige Limit für passende Ausdrücke ist 1024.
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.proximity-search">
        <title>Angenäherte Suchen</title>

        <para>
            Lucene unterstützt das Finden von Wörtern aus einer Phrase die einen spezifizierten
            Abstand an Wörtern in einem String weg sind. Um eine angenäherte Suche durchzuführen muß
            das Tilde, "~", Symbol am Ende der Phrase verwendet werden. Um zum Beispiel nach "Zend"
            und "Framework" innerhalb von 10 Wörtern zueinander in einem Dokument zu suchen kann die
            folgende Suche verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
"Zend Framework"~10
]]></programlisting>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.boosting">
        <title>Einen Ausdruck schneller machen</title>

        <para>
            Java Lucene und <classname>Zend_Search_Lucene</classname> bieten einen Level der
            Relevanz von passenden Dokumenten basierend auf den gefundenen Ausdrücken. Um die
            Relevanz eines Ausdrucks zu erhöhen kann das Karet, "^", Symbol mit einem Boost Faktor
            (einer Zahl) am Ende des Ausdrucks nach dem gesucht wird, verwendet werden. Je höher
            Boost Faktor ist, desdo relevanter wird der Ausdruck werden.
        </para>

        <para>
            Das boosten erlaubt die Kontrolle der Relevanz eines Dokuments durch das boosten
            individueller Ausdrücke. Wenn man zum Beispiel nach
        </para>

        <programlisting language="querystring"><![CDATA[
PHP framework
]]></programlisting>

        <para>
            sucht und will das der Ausdruck "PHP" mehr Relevanz hat, kann er durch Verwendung des ^
            Symbols zusammen mit einem Boost Faktor beim Ausdruck geboostet werden. Man würde zum
            Beispiel folgendes angeben:
        </para>

        <programlisting language="querystring"><![CDATA[
PHP^4 framework
]]></programlisting>

        <para>
            Das macht Dokumente in denen der Ausdruck <acronym>PHP</acronym> vorkommt relevanter.
            Man kann genauso Phrasenausdrücke boosten und Unterabfragen wie im Beispiel gezeigt:
        </para>

        <programlisting language="querystring"><![CDATA[
"PHP framework"^4 "Zend Framework"
]]></programlisting>

        <para>
            Standardwert ist der Boost Faktor 1. Auch wenn der Boost Faktor positiv sein muß, kann
            er kleiner als 1 sein (z.B. 0.2).
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.boolean">
        <title>Boolsche Operatoren</title>

        <para>
            Boolsche Operatoren erlauben es Ausdrücke durch logische Operatoren zu kombinieren.
            Lucene unterstützt AND, "+", OR, NOT und "-" als boolsche Operatoren. In Java Lucene
            müssen alle boolschen Operatoren GROßGESCHRIEBEN werden. In
            <classname>Zend_Search_Lucene</classname> nicht.
        </para>

        <para>
            AND, OR, und NOT Operatoren und "+", "-" definieren zwei unterschiedliche Stile um
            boolsche Abfragen zu erstellen. Im Gegensatz zu Java Lucene erlaubt es
            <classname>Zend_Search_Lucene</classname> nicht diese zwei Stile zu mischen.
        </para>

        <para>
            Wenn der AND/OR/NOT Stil verwendet wird dann muß der AND oder OR Operator zwischen allen
            Abfrageausdrücken vorhanden sein. Jedem Ausdruck kann auch ein NOT Operator
            vorangestellt werden. Der AND Operator hat eine höhere Präzedenz als der OR Operator.
            Das unterscheidet sich vom Verhalten von Java Lucene.
        </para>

        <sect3 id="zend.search.lucene.query-language.boolean.and">
            <title>AND</title>

            <para>
                Der AND Operator bedeutet das alle Ausdrücke der "AND Gruppe" in einigen Teilen der
                gesuchten Feld(er) passen müssen.
            </para>

            <para>
                Um nach Dokumenten zu Suchen die "PHP Framework" und "Zend Framework" enthalten kann
                die folgende Abfrage verwendet werden:
            </para>

            <programlisting language="querystring"><![CDATA[
"PHP Framework" AND "Zend Framework"
]]></programlisting>
        </sect3>

        <sect3 id="zend.search.lucene.query-language.boolean.or">
            <title>OR</title>

            <para>
                Der OR Operator teilt die Abfrage in verschiedene optionale Begriffe.
            </para>

            <para>
                Um nach Dokumenten zu Suchen die "PHP Framework" oder "Zend Framework" enthalten
                kann die folgende Abfrage verwendet werden:
            </para>

            <programlisting language="querystring"><![CDATA[
"PHP Framework" OR "Zend Framework"
]]></programlisting>
        </sect3>

        <sect3 id="zend.search.lucene.query-language.boolean.not">
            <title>NOT</title>

            <para>
                Der NOT Operator scheidet Dokumente aus die den Ausdruck nach NOT enthalten. Aber
                eine "AND Gruppe" die nur Ausdrücke mit NOT Operatoren enthält, gibt ein leeres
                Ergebnis zurück statt einem kompletten Set von indizierten Dokumenten.
            </para>

            <para>
                Um nach Dokumenten zu Suchen die "PHP Framework" enthalten aber "Zend Framework"
                nicht kann die folgende Abfrage verwendet werden:
            </para>

            <programlisting language="querystring"><![CDATA[
"PHP Framework" AND NOT "Zend Framework"
]]></programlisting>
        </sect3>

        <sect3 id="zend.search.lucene.query-language.boolean.other-form">
            <title>&amp;&amp;, ||, und ! Operatoren</title>

            <para>
                &amp;&amp;, ||, und ! können statt den AND, OR und NOT Notation verwendet werden.
            </para>
        </sect3>

        <sect3 id="zend.search.lucene.query-language.boolean.plus">
            <title>+</title>

            <para>
                Der "+" oder benötigende Operator erfordert das der Ausdruck nach dem "+" Symbol im
                passenden Dokument vorhanden ist.
            </para>

            <para>
                Um nach Dokumenten zu Suchen die "Zend" enthalten müssen und "Framework" enthalten
                können, kann die folgende Abfrage verwendet werden:
            </para>

            <programlisting language="querystring"><![CDATA[
+Zend Framework
]]></programlisting>
        </sect3>

        <sect3 id="zend.search.lucene.query-language.boolean.minus">
            <title>-</title>

            <para>
                Der "-" oder ausschließende Operator schließt Dokumente aus die dem Ausdruck nach
                dem "-" Symbol entsprechen.
            </para>

            <para>
                Um nach Dokumenten zu Suchen die "PHP Framework" enthalten aber "Zend Framework"
                nicht, kann die folgende Abfrage verwendet werden:
            </para>

            <programlisting language="querystring"><![CDATA[
"PHP Framework" -"Zend Framework"
]]></programlisting>
        </sect3>

        <sect3 id="zend.search.lucene.query-language.boolean.no-operator">
            <title>kein Operator</title>

            <para>
                Wenn kein Operator verwendet wird, dann wird das Suchverhalten durch den
                "standardmäßigen boolschen Operator" bestimmt.
            </para>

            <para>
                Dieser ist standardmäßig auf 'OR' gesetzt.
            </para>

            <para>
                Das impliziert das jeder Ausdruck standardmäßig optional ist. Er kann oder kann
                nicht innerhalb des Dokuments enthalten sein, aber Dokumenten mit diesem Ausdruck
                haben einen Höheren Stellenwert.
            </para>

            <para>
                Um nach Dokumenten zu Suchen die "PHP Framework" benötigen und "Zend Framework"
                enthalten können kann die folgende Abfrage verwendet werden:
            </para>

            <programlisting language="querystring"><![CDATA[
+"PHP Framework" "Zend Framework"
]]></programlisting>

            <para>
                Der standardmäßige boolsche Operator kann mit den
                <classname>Zend_Search_Lucene_Search_QueryParser::setDefaultOperator($operator)</classname>
                und
                <classname>Zend_Search_Lucene_Search_QueryParser::getDefaultOperator()</classname>
                Methoden gesetzt oder geholt werden.
            </para>

            <para>
                Diese Methoden arbeiten mit den
                <classname>Zend_Search_Lucene_Search_QueryParser::B_AND</classname> und
                <classname>Zend_Search_Lucene_Search_QueryParser::B_OR</classname> Konstanten.
            </para>
        </sect3>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.grouping">
        <title>Gruppieren</title>

        <para>
            Java Lucene und <classname>Zend_Search_Lucene</classname> unterstützen die Verwendung
            von Klammern um Fälle zu gruppieren und Unterabfragen zu erstellen. Das kann nützlich
            sein wenn man die boolsche Operatoren für eine Abfrage kontrollieren will, oder
            unterschiedliche Abfragestile mischen will:
        </para>

        <programlisting language="querystring"><![CDATA[
+(Framework OR Bibliothek) +php
]]></programlisting>

        <para>
            <classname>Zend_Search_Lucene</classname> unterstützt Unterabfragen von beliebigen
            Ebenen.
        </para>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.field-grouping">
        <title>Felder gruppieren</title>

        <para>
            Lucene unterstützt auch die Verwendung von Klammern um mehrere Fälle in ein einzelnes
            Feld zu gruppieren.
        </para>

        <para>
            Um nach einem Titel zu suchen die sowohl das Wort "Rückkehr" und die Phrase "rosaroter
            Panther" kann die folgende Abfrage verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
title:(+Rückkehr +"rosaroter Panther")
]]></programlisting>
    </sect2>

    <sect2 id="zend.search.lucene.query-language.escaping">
        <title>Escapen von speziellen Zeichen</title>

        <para>
            Lucene unterstützt das Escapen von speziellen Zeichen die in der Abfragesyntax verwendet
            werden. Die aktuelle Liste der speziellen Zeichen ist:
        </para>

        <para>
            + - &amp;&amp; || ! ( ) { } [ ] ^ " ~ * ? : \
        </para>

        <para>
            + und - in einem einzelnen Ausdruck werden automatisch als normale Zeichen behandelt.
        </para>

        <para>
            Für andere Instanzen von solchen Zeichen kann das \ vor jedem speziellen Zeichen
            verwendet werden der escaped werden soll. Um zum Beispiel nach (1+1):2 zu suchen kann
            die folgende Abfrage verwendet werden:
        </para>

        <programlisting language="querystring"><![CDATA[
\(1\+1\)\:2
]]></programlisting>
    </sect2>
</sect1>