Zend_Search_Lucene-JavaLucene.xml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <sect1 id="zend.search.lucene.java-lucene">
  2. <title>Interoperatie met Java Lucene</title>
  3. <sect2 id="zend.search.lucene.index-creation.file-formats">
  4. <title>Bestandsformaten</title>
  5. <para>
  6. Het bestandsformaat van het Zend_Search_Lucene index bestand is binary compatible met Lucene
  7. versie 1.4 en hoger.
  8. </para>
  9. <para>
  10. Een gedetailleerde beschrijving van dit formaat is beschikbaar op:
  11. <ulink url="http://lucene.apache.org/java/docs/fileformats.html"/>.
  12. </para>
  13. </sect2>
  14. <sect2 id="zend.search.lucene.index-creation.index-directory">
  15. <title>Index Map</title>
  16. <para>
  17. Na het aanmaken van de index zal de index map verschillende bestanden bevatten:
  18. </para>
  19. <itemizedlist>
  20. <listitem>
  21. <para>
  22. het <filename>segments</filename> bestand is een lijst van index segmenten.
  23. </para>
  24. </listitem>
  25. <listitem>
  26. <para>
  27. <filename>*.cfs</filename> bestanden bevatten index segmenten.
  28. Nota! Een geoptimaliseerde index heeft altijd slechts één segment.
  29. </para>
  30. </listitem>
  31. <listitem>
  32. <para>
  33. het <filename>deletable</filename> bestand is een lijst bestanden die niet langer
  34. worden gebruikt door de index, maar niet konden worden verwijderd.
  35. </para>
  36. </listitem>
  37. </itemizedlist>
  38. </sect2>
  39. <sect2 id="zend.search.lucene.java-lucene.source-code">
  40. <title>Java Broncode</title>
  41. <para>
  42. Het volgende Java programmavoorbeeld geeft een voorbeeld van hoe je een bestand
  43. indexeert via Java Lucene:
  44. </para>
  45. <programlisting role="java"><![CDATA[
  46. /**
  47. * Aanmaak van de Index:
  48. */
  49. import org.apache.lucene.index.IndexWriter;
  50. import org.apache.lucene.document.*;
  51. import java.io.*
  52. ...
  53. IndexWriter indexWriter = new IndexWriter("/data/mijn_index",
  54. new SimpleAnalyzer(), true);
  55. ...
  56. String filename = "/pad/naar/bestand-dat-moet-worden-geindexeerd.txt"
  57. File f = new File(filename);
  58. Document doc = new Document();
  59. doc.add(Field.Text("path", filename));
  60. doc.add(Field.Keyword("modified",DateField.timeToString(f.lastModified())));
  61. doc.add(Field.Text("author", "unknown"));
  62. FileInputStream is = new FileInputStream(f);
  63. Reader reader = new BufferedReader(new InputStreamReader(is));
  64. doc.add(Field.Text("contents", reader));
  65. indexWriter.addDocument(doc);]]>
  66. </programlisting>
  67. </sect2>
  68. <sect2 id="zend.search.lucene.java-lucene.jar">
  69. <title>LuceneIndexCreation.jar gebruiken</title>
  70. <para>
  71. Om snel te kunnen starten met Zend_Search_Lucene werd een JAR bestand (Java) aangemaakt
  72. dat je toelaat een index vanaf de commandoregel aan te maken. Voor meer informatie over
  73. JAR bestanden kan je terecht op: <ulink url="http://java.sun.com/docs/books/tutorial/jar/basics/index.html"/>.
  74. </para>
  75. <para>
  76. LuceneIndexCreation.jar leest tekst bestanden door en maakt er een index voor aan. Gebruik:
  77. </para>
  78. <programlisting role="java"><![CDATA[
  79. java -jar LuceneIndexCreation.jar [-c] [-s] <document_pad> <index_pad>
  80. -c - dwing de index naar case sensitive
  81. -s - inhoud in de index opslaan
  82. ]]></programlisting>
  83. <para>
  84. Dit commando leest een map <code>&lt;document_map&gt;</code> door, inclusief alle onderliggende mappen,
  85. en maakt een Lucene index aan. De index is een set bestanden die in een andere map, gespecificeerd door
  86. <code>&lt;index_map&gt;</code>, zullen worden opgeslagen..
  87. </para>
  88. <para>
  89. Voor elk document dat moet worden geïndexeerd maakt LuceneIndexCreation een documentobject aan
  90. met drie velden: een <emphasis>contents</emphasis> veld dat de inhoud (body) van het document
  91. bevat en een <emphasis>modifies</emphasis> veld dat de bestandswijzigingstijd bevat en tenslotte het
  92. <code>&lt;path&gt;</code> veld dat het volledige pad en de bestandsnaam bevat.
  93. </para>
  94. <para>
  95. Indien de <option>-c</option> optie werd gespecificeerd zal de index tot case sensitive gedwongen worden. Indien
  96. niet, zullen alle termen naar kleine letters worden geconverteerd voor ze aan de index worden toegevoegd.
  97. </para>
  98. <para>
  99. Indien de <option>-s</option> optie werd gespecificeerd, zal de inhoud van het document ook in de index
  100. worden opgeslagen. Die kan dan via de velden <code>path</code> en <code>modified</code> worden opgeroepen.
  101. </para>
  102. <para>
  103. Anders worden alleen de <code>path</code> en <code>modified</code> velden opgeslagen, en
  104. het <code>contents</code> veld wordt slechts geïndexeerd. In dat geval moet de documentinhoud
  105. vanaf een oorspronkelijke bron worden opgehaald via zijn <code>path</code>.
  106. </para>
  107. <para>
  108. Wees voorzichtig, het gebruik van de <option>-s</option> optie vergroot de index ongeveer vijf maal.
  109. </para>
  110. </sect2>
  111. </sect1>
  112. <!--
  113. vim:se ts=4 sw=4 et:
  114. -->