Browse Source

[DOCUMENTATION] German:

- sync up to r15045

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@15275 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 years ago
parent
commit
50166af31b
1 changed files with 141 additions and 13 deletions
  1. 141 13
      documentation/manual/de/module_specs/Zend_Search_Lucene-Searching.xml

+ 141 - 13
documentation/manual/de/module_specs/Zend_Search_Lucene-Searching.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 14978 -->
+<!-- EN-Revision: 15037 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.search.lucene.searching">
     <title>Einen Index durchsuchen</title>
@@ -358,25 +358,153 @@ $index->find($query, 'name', SORT_STRING, 'quantity', SORT_NUMERIC, SORT_DESC);
     <sect2 id="zend.search.lucene.searching.highlighting">
         <title>Such Resultate hervorheben</title>
         <para>
-            Die <classname>Zend_Search_Lucene_Search_Query::highlightMatches()</classname> Methode erlaubt es
-            dem Entwickler Begriffe von HTML Dokumenten im Kontext der Suchabfrage hervorzuheben:
+            Zend_Search_Lucene bietet zwei Optionen für das Highlightinh von Suchergebnissen.
+        </para>
+        <para>
+            Die erste ist die Verwendung der <code>Zend_Search_Lucene_Document_Html</code> Klasse
+            (siehe <link linkend="zend.search.lucene.index-creation.html-documents">das Kapitel
+            über HTML Dokumente</link> für Details) mit den folgenden Methoden:
             <programlisting role="php"><![CDATA[
-$query = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);
-$hits = $index->find($query);
-...
-$highlightedHTML = $query->highlightMatches($sourceHTML);
+/**
+ * Highlight text with specified color
+ *
+ * @param string|array $words
+ * @param string $colour
+ * @return string
+ */
+public function highlight($words, $colour = '#66ffff');
 ]]>
             </programlisting>
+            <programlisting role="php"><![CDATA[
+/**
+ * Highlight text using specified View helper or callback function.
+ *
+ * @param string|array $words  Words to highlight. Words could be organized using the array or string.
+ * @param callback $callback   Callback method, used to transform (highlighting) text.
+ * @param array    $params     Array of additionall callback parameters passed through into it
+ *                             (first non-optional parameter is an HTML fragment for highlighting)
+ * @return string
+ * @throws Zend_Search_Lucene_Exception
+ */
+public function highlightExtended($words, $callback, $params = array())
+]]>
+            </programlisting>
+        </para>
+        <para>
+            Um das Verhalten beim Highlighting zu verändern kann die
+            <code>highlightExtended()</code> Methode mit einem spezifizierten Callback verwendet
+            werden, welche einen oder mehreren Parametern entgegennimmt
+            <footnote>
+                <para>
+                    Der erste ist ein HTML Fragment für das Highlighting und die anderen sind
+                    abhängig vom Verhalten des Callbacks. Der Rückgabewert ist ein highlighted
+                    HTML Fragment.
+                </para>
+            </footnote>
+            , oder durch Erweiterung der <code>Zend_Search_Lucene_Document_Html</code> Klasse und
+            dem Anpassen der <code>applyColour($stringToHighlight, $colour)</code> Methode die
+            als Standardmäßiger Callback für das Highlighten verwendet wird.
+            <footnote>
+                <para>
+                    In beiden Fällen wird das zurückgegebene HTML automatisch in gültiges XHTML
+                    transformiert.
+                </para>
+            </footnote>
+        </para>
+        <para>
+            <link linkend="zend.view.helpers">View Helfer</link> können auch als Callbacks im
+            Kontext von View Skripten verwendet werden:
+            <programlisting role="php"><![CDATA[
+$doc->highlightExtended('word1 word2 word3...', array($this, 'myViewHelper'));
+]]>
+            </programlisting>
+        </para>
+        <para>
+            Das Ergebnis der Highlighting Operation wird von der
+            <code>Zend_Search_Lucene_Document_Html->getHTML()</code> Methode empfangen.
         </para>
 
+        <note>
+            <para>
+                Highlighting wird in den Ausdrücken des aktuellen Analysators durchgeführt. So
+                werden alle Formen des Wortes/der Wörter vom Analysator erkannt und highgelighted.
+            </para>
+            <para>
+                Z.B. wenn der aktuelle Analysator unabhängig von der Groß- oder Kleinschreibung ist
+                und wir das Highlighten des Wortes 'text' anfragen, dann werden 'text', 'Text',
+                'TEXT' und alle anderen Kombinationen von Schreibweisen geHighlightet.
+            </para>
+            <para>
+                Auf dem gleichen Weg wird, wenn der aktuelle Analysator Abstammung unterstützt und
+                wir das Highlighten von 'indexed' anfragen, dann werden 'index', 'indexing',
+                'indices' und andere Formen dieser Wörter geHighlighted.
+            </para>
+            <para>
+                Wenn andererseits das Wort vom aktuellen Analysator übersprungen wird (z.B. wenn
+                ein Filter für kurze Wörter dem Analysator angehängt ist), dann wird nichts
+                geHighlighted.
+            </para>
+        </note>
+
+        <para>
+            Die zweite Option ist die Verwendung der
+            <code>Zend_Search_Lucene_Search_Query->highlightMatches(string $inputHTML[,
+            Zend_Search_Lucene_Search_Highlighter_Interface $highlighter])</code> Methode:
+            <programlisting role="php"><![CDATA[
+query = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);
+highlightedHTML = $query->highlightMatches($sourceHTML);
+]]>
+            </programlisting>
+        </para>
+        <para>
+            Der optionale zweite Parameter ist ein Highlighter Objekt welches das
+            <code>Zend_Search_Lucene_Search_Highlighter_Interface</code> Interface implementiert:
+            <programlisting role="php"><![CDATA[
+interface Zend_Search_Lucene_Search_Highlighter_Interface
+{
+    /**
+     * Set document for highlighting.
+     *
+     * @param Zend_Search_Lucene_Document_Html $document
+     */
+    public function setDocument(Zend_Search_Lucene_Document_Html $document);
+
+    /**
+     * Get document for highlighting.
+     *
+     * @return Zend_Search_Lucene_Document_Html $document
+     */
+    public function getDocument();
+
+    /**
+     * Highlight specified words (method is invoked once per subquery)
+     *
+     * @param string|array $words  Words to highlight. They could be organized using the array or string.
+     */
+    public function highlight($words);
+}
+]]>
+            </programlisting>
+            Wobei das <code>Zend_Search_Lucene_Document_Html</code> Objekt ein Objekt ist welches
+            von der HMTL Quelle erzeugt wird, die wiederum von der
+            <code>Zend_Search_Lucene_Search_Query->highlightMatches()</code> Methode geliefert
+            wird.
+        </para>
+
+        <para>
+            Wenn der <code>$highlighter</code> Parameter nicht angegeben wird, dann wird das
+            <code>Zend_Search_Lucene_Search_Highlighter_Default</code> Objekt initiiert und
+            verwendet.
+        </para>
+        <para>
+            Die Highlighter Methode <code>highlight()</code> ist einmal pro SubQuery enthalten,
+            deshalb hat sie für diese auch die Möglichkeit das Highlightig zu unterscheiden.
+        </para>
         <para>
-            Die <code>highlightMatches()</code> Methode verwendet die <classname>Zend_Search_Lucene_Document_Html</classname>
-            Klasse (siehe den <link linkend="zend.search.lucene.index-creation.html-documents">HTML Dokumente Abschnitt</link> für Details)
-            für das Bearbeiten von HTML, deshalb hat Sie die gleichen Voraussetzungen wie HTML Quellen.
+            Aktuell, macht der standardmäßige Highlighter das indem eine vordefinierte Farbtabelle
+            durchlaufen wird. Man kann also seinen eigenen Highlighter implementieren, oder den
+            standardmäßigen nur erweitern und die Farbtabelle umdefinieren.
         </para>
     </sect2>
 
 </sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->