Commit 9b18cd42e3a679534da26b7110294735924bb4ea

Authored by Megan
1 parent 92286ccb

The PHP Lucene should now work as an alternative to the Java Lucene.

Committed by: Megan Watson
search2/indexing/indexers/PHPLuceneIndexer.inc.php
... ... @@ -7,31 +7,31 @@
7 7 * Document Management Made Simple
8 8 * Copyright (C) 2008, 2009 KnowledgeTree Inc.
9 9 * Portions copyright The Jam Warehouse Software (Pty) Limited
10   - *
  10 + *
11 11 * This program is free software; you can redistribute it and/or modify it under
12 12 * the terms of the GNU General Public License version 3 as published by the
13 13 * Free Software Foundation.
14   - *
  14 + *
15 15 * This program is distributed in the hope that it will be useful, but WITHOUT
16 16 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 17 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18 18 * details.
19   - *
  19 + *
20 20 * You should have received a copy of the GNU General Public License
21 21 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22   - *
23   - * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco,
  22 + *
  23 + * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco,
24 24 * California 94120-7775, or email info@knowledgetree.com.
25   - *
  25 + *
26 26 * The interactive user interfaces in modified source and object code versions
27 27 * of this program must display Appropriate Legal Notices, as required under
28 28 * Section 5 of the GNU General Public License version 3.
29   - *
  29 + *
30 30 * In accordance with Section 7(b) of the GNU General Public License version 3,
31 31 * these Appropriate Legal Notices must retain the display of the "Powered by
32   - * KnowledgeTree" logo and retain the original copyright notice. If the display of the
  32 + * KnowledgeTree" logo and retain the original copyright notice. If the display of the
33 33 * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
34   - * must display the words "Powered by KnowledgeTree" and retain the original
  34 + * must display the words "Powered by KnowledgeTree" and retain the original
35 35 * copyright notice.
36 36 * Contributor( s): ______________________________________
37 37 *
... ... @@ -67,9 +67,13 @@ class PHPLuceneIndexer extends Indexer
67 67 }
68 68 catch(Exception $ex)
69 69 {
70   - $this->lucene = null;
71   - if (!$catchException)
72   - throw $ex;
  70 + if($ex->getMessage() == "Index doesn't exists in the specified directory."){
  71 + $this->lucene = new Zend_Search_Lucene($indexPath, true);
  72 + }else {
  73 + $this->lucene = null;
  74 + if (!$catchException)
  75 + throw $ex;
  76 + }
73 77 }
74 78 }
75 79  
... ... @@ -94,13 +98,16 @@ class PHPLuceneIndexer extends Indexer
94 98 */
95 99 private function addDocument($docid, $content, $discussion, $title, $version)
96 100 {
97   - $doc = new Zend_Search_Lucene_Document();
98   - $doc->addField(Zend_Search_Lucene_Field::Text('DocumentID', PHPLuceneIndexer::longToString($docid)));
99   - $doc->addField(Zend_Search_Lucene_Field::Text('Content', $content, 'UTF-8'));
100   - $doc->addField(Zend_Search_Lucene_Field::Text('Discussion', $discussion, 'UTF-8'));
101   - $doc->addField(Zend_Search_Lucene_Field::Text('Title', $title, 'UTF-8'));
102   - $doc->addField(Zend_Search_Lucene_Field::Text('Version', $version, 'UTF-8'));
103   - $this->lucene->addDocument($doc);
  101 + $teaser = substr($content, 0, 250);
  102 +
  103 + $doc = new Zend_Search_Lucene_Document();
  104 + $doc->addField(Zend_Search_Lucene_Field::Text('DocumentID', PHPLuceneIndexer::longToString($docid)));
  105 + $doc->addField(Zend_Search_Lucene_Field::Text('Content', $content, 'UTF-8'));
  106 + $doc->addField(Zend_Search_Lucene_Field::unStored('Discussion', $discussion, 'UTF-8'));
  107 + $doc->addField(Zend_Search_Lucene_Field::Text('Title', $title, 'UTF-8'));
  108 + $doc->addField(Zend_Search_Lucene_Field::Text('Version', $version, 'UTF-8'));
  109 + $doc->addField(Zend_Search_Lucene_Field::unIndexed('Summary', $teaser, 'UTF-8'));
  110 + $this->lucene->addDocument($doc);
104 111 }
105 112  
106 113 /**
... ... @@ -232,6 +239,7 @@ class PHPLuceneIndexer extends Indexer
232 239  
233 240 $document_id = PHPLuceneIndexer::stringToLong($document->DocumentID);
234 241  
  242 + /*
235 243 $coreText = '';
236 244 if ($queryContent)
237 245 {
... ... @@ -243,6 +251,11 @@ class PHPLuceneIndexer extends Indexer
243 251 }
244 252  
245 253 $content = $query->highlightMatches($coreText);
  254 + */
  255 +
  256 + $teaser = $document->Summary;
  257 +
  258 + $content = $query->highlightMatches($teaser);
246 259  
247 260 $title = $document->Title;
248 261 $score = $hit->score;
... ... @@ -250,6 +263,7 @@ class PHPLuceneIndexer extends Indexer
250 263 // avoid adding duplicates. If it is in already, it has higher priority.
251 264 if (!array_key_exists($document_id, $results) || $score > $results[$document_id]->Score)
252 265 {
  266 + $item = new DocumentResultItem($document_id, $score, $title, $content);
253 267 $item = new QueryResultItem($document_id, $score, $title, $content);
254 268 if ($item->CanBeReadByUser)
255 269 {
... ... @@ -284,4 +298,8 @@ class PHPLuceneIndexer extends Indexer
284 298 return _kt('Document Indexer Library');
285 299 }
286 300 }
287   -?>
  301 +
  302 + public function isDocumentIndexed($documentId){
  303 + // do something
  304 + }
  305 +?>
288 306 \ No newline at end of file
... ...