ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
ilLuceneSearcher Class Reference

Reads and parses lucene search results. More...

+ Collaboration diagram for ilLuceneSearcher:

Public Member Functions

 setType ($a_type)
 Set search type. More...
 
 getType ()
 Get type. More...
 
 search ()
 Search. More...
 
 highlight ($a_obj_ids)
 Highlight/Detail query. More...
 
 nextResultPage ()
 get next result page More...
 
 getHighlighter ()
 get highlighter More...
 
 getResult ()
 Get result. More...
 
 getPageNumber ()
 get current page number More...
 

Static Public Member Functions

static getInstance (ilLuceneQueryParser $qp)
 Get singleton instance. More...
 

Data Fields

const TYPE_STANDARD = 1
 
const TYPE_USER = 2
 

Protected Member Functions

 performSearch ()
 search lucene More...
 

Private Member Functions

 __construct ($qp)
 Constructor. More...
 

Private Attributes

 $query_parser = null
 
 $result = null
 
 $highlighter = null
 
 $page_number = 1
 
 $type = self::TYPE_STANDARD
 

Static Private Attributes

static $instance = null
 

Detailed Description

Reads and parses lucene search results.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
$Id$

Definition at line 35 of file class.ilLuceneSearcher.php.

Constructor & Destructor Documentation

◆ __construct()

ilLuceneSearcher::__construct (   $qp)
private

Constructor.

Parameters
objectilLuceneQueryParser
Returns
ilLuceneSearcher

Definition at line 53 of file class.ilLuceneSearcher.php.

54  {
55  $this->result = new ilLuceneSearchResult();
56  $this->result->setCallback(array($this,'nextResultPage'));
57  $this->query_parser = $qp;
58  }
Search result implementing iterator interface.

Member Function Documentation

◆ getHighlighter()

ilLuceneSearcher::getHighlighter ( )

get highlighter

Returns

Definition at line 171 of file class.ilLuceneSearcher.php.

References $highlighter.

172  {
173  return $this->highlighter;
174  }

◆ getInstance()

static ilLuceneSearcher::getInstance ( ilLuceneQueryParser  $qp)
static

Get singleton instance.

Parameters
objectilLuceneQueryParser
Returns
ilLuceneSearcher

Definition at line 67 of file class.ilLuceneSearcher.php.

Referenced by ilSearchAutoComplete\getLuceneList(), ilLuceneUserSearchGUI\performSearch(), ilLuceneAdvancedSearchGUI\performSearch(), ilLuceneSearchGUI\performSearch(), ilSoapObjectAdministration\searchObjects(), ilLuceneAdvancedSearchGUI\showSavedResults(), and ilLuceneSearchGUI\showSavedResults().

68  {
69  if(self::$instance)
70  {
71  return self::$instance;
72  }
73  return self::$instance = new ilLuceneSearcher($qp);
74  }
Reads and parses lucene search results.
+ Here is the caller graph for this function:

◆ getPageNumber()

ilLuceneSearcher::getPageNumber ( )

get current page number

Parameters

Definition at line 195 of file class.ilLuceneSearcher.php.

References $page_number.

Referenced by performSearch().

196  {
197  return $this->page_number;
198  }
+ Here is the caller graph for this function:

◆ getResult()

ilLuceneSearcher::getResult ( )

Get result.

Parameters

Definition at line 181 of file class.ilLuceneSearcher.php.

References $result.

182  {
183  if($this->result instanceof ilLuceneSearchResult)
184  {
185  return $this->result;
186  }
187  // TODO Error handling
188  }
Search result implementing iterator interface.

◆ getType()

ilLuceneSearcher::getType ( )

Get type.

Returns
int

Definition at line 89 of file class.ilLuceneSearcher.php.

References $type.

Referenced by performSearch().

90  {
91  return $this->type;
92  }
+ Here is the caller graph for this function:

◆ highlight()

ilLuceneSearcher::highlight (   $a_obj_ids)

Highlight/Detail query.

Parameters
array$a_obj_idsArry of obj_ids
Returns
object ilLuceneHighlightResultParser

Definition at line 109 of file class.ilLuceneSearcher.php.

References $highlighter, $ilBench, $ilLog, $ilSetting, $res, and ilRpcClientFactory\factory().

110  {
111  global $ilBench,$ilSetting, $ilLog;
112 
113  include_once './Services/Search/classes/Lucene/class.ilLuceneHighlighterResultParser.php';
114 
115  // TODO error handling
116  if(!$this->query_parser->getQuery())
117  {
118  return;
119  }
120 
121  // Search in combined index
122  $ilBench->start('Lucene','SearchHighlight');
123  try
124  {
125  include_once './Services/WebServices/RPC/classes/class.ilRpcClientFactory.php';
126  $res = ilRpcClientFactory::factory('RPCSearchHandler')->highlight(
127  CLIENT_ID.'_'.$ilSetting->get('inst_id',0),
128  $a_obj_ids,
129  $this->query_parser->getQuery()
130  );
131  }
132  catch(XML_RPC2_FaultException $e)
133  {
134  // TODO: better error handling
135  $ilLog->write(__METHOD__.': '.$e->getMessage());
136  return new ilLuceneHighlighterResultParser();
137  }
138  catch(Exception $e)
139  {
140  $ilLog->write(__METHOD__.': '.$e->getMessage());
141  return new ilLuceneHighlighterResultParser();
142  }
143  $ilBench->stop('Lucene','SearchHighlight');
144 
145  $ilBench->start('Lucene','SearchHighlightParser');
146  include_once './Services/Search/classes/Lucene/class.ilLuceneHighlighterResultParser.php';
147  $this->highlighter = new ilLuceneHighlighterResultParser();
148  #$GLOBALS['ilLog']->write(__METHOD__.' Result is '. $res);
149  $this->highlighter->setResultString($res);
150  $this->highlighter->parse();
151  $ilBench->stop('Lucene','SearchHighlightParser');
152 
153  return $this->highlighter;
154  }
Parses result XML from lucene search highlight.
static factory($a_package)
Create an XML_RPC2 client instance.
global $ilSetting
Definition: privfeed.php:40
global $ilBench
Definition: ilias.php:18
+ Here is the call graph for this function:

◆ nextResultPage()

ilLuceneSearcher::nextResultPage ( )

get next result page

Parameters

Definition at line 161 of file class.ilLuceneSearcher.php.

References performSearch().

162  {
163  $this->page_number++;
164  $this->performSearch();
165  }
performSearch()
search lucene
+ Here is the call graph for this function:

◆ performSearch()

ilLuceneSearcher::performSearch ( )
protected

search lucene

Returns

Definition at line 204 of file class.ilLuceneSearcher.php.

References $ilBench, $ilLog, $ilSetting, $res, ilRpcClientFactory\factory(), getPageNumber(), and getType().

Referenced by nextResultPage(), and search().

205  {
206  global $ilBench,$ilSetting, $ilLog;
207 
208  // TODO error handling
209  if(!$this->query_parser->getQuery())
210  {
211  return;
212  }
213  $ilBench->start('Lucene','SearchCombinedIndex');
214  try
215  {
216  switch($this->getType())
217  {
218 
219  case self::TYPE_USER:
220  include_once './Services/WebServices/RPC/classes/class.ilRpcClientFactory.php';
221  $res = ilRpcClientFactory::factory('RPCSearchHandler')->searchUsers(
222  CLIENT_ID.'_'.$ilSetting->get('inst_id',0),
223  (string) $this->query_parser->getQuery()
224  );
225  break;
226 
227  case self::TYPE_STANDARD:
228  default:
229  include_once './Services/WebServices/RPC/classes/class.ilRpcClientFactory.php';
230  $res = ilRpcClientFactory::factory('RPCSearchHandler')->search(
231  CLIENT_ID.'_'.$ilSetting->get('inst_id',0),
232  (string) $this->query_parser->getQuery(),
233  $this->getPageNumber()
234  );
235  break;
236 
237  }
238  }
239  catch(XML_RPC2_FaultException $e)
240  {
241  // TODO: better error handling
242  $ilBench->stop('Lucene','SearchCombinedIndex');
243  $ilLog->write(__METHOD__.': '.$e->getMessage());
244  return;
245  }
246  catch(Exception $e)
247  {
248  $ilBench->stop('Lucene','SearchCombinedIndex');
249  $ilLog->write(__METHOD__.': '.$e->getMessage());
250  return;
251  }
252  $ilBench->stop('Lucene','SearchCombinedIndex');
253 
254 
255  // Parse results
256  $ilBench->start('Lucene','ParseSearchResult');
257  include_once './Services/Search/classes/Lucene/class.ilLuceneSearchResultParser.php';
258  $parser = new ilLuceneSearchResultParser($res);
259 
260  #$GLOBALS['ilLog']->write(__METHOD__.' Result is: ' . $res);
261 
262  $parser->parse($this->result);
263  $ilBench->stop('Lucene','ParseSearchResult');
264  return;
265  }
getPageNumber()
get current page number
static factory($a_package)
Create an XML_RPC2 client instance.
global $ilSetting
Definition: privfeed.php:40
global $ilBench
Definition: ilias.php:18
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ search()

ilLuceneSearcher::search ( )

Search.

Returns

Definition at line 99 of file class.ilLuceneSearcher.php.

References performSearch().

100  {
101  $this->performSearch();
102  }
performSearch()
search lucene
+ Here is the call graph for this function:

◆ setType()

ilLuceneSearcher::setType (   $a_type)

Set search type.

Parameters
type$a_type

Definition at line 80 of file class.ilLuceneSearcher.php.

81  {
82  $this->type = $a_type;
83  }

Field Documentation

◆ $highlighter

ilLuceneSearcher::$highlighter = null
private

Definition at line 44 of file class.ilLuceneSearcher.php.

Referenced by getHighlighter(), and highlight().

◆ $instance

ilLuceneSearcher::$instance = null
staticprivate

Definition at line 40 of file class.ilLuceneSearcher.php.

◆ $page_number

ilLuceneSearcher::$page_number = 1
private

Definition at line 45 of file class.ilLuceneSearcher.php.

Referenced by getPageNumber().

◆ $query_parser

ilLuceneSearcher::$query_parser = null
private

Definition at line 42 of file class.ilLuceneSearcher.php.

◆ $result

ilLuceneSearcher::$result = null
private

Definition at line 43 of file class.ilLuceneSearcher.php.

Referenced by getResult().

◆ $type

ilLuceneSearcher::$type = self::TYPE_STANDARD
private

Definition at line 46 of file class.ilLuceneSearcher.php.

Referenced by getType().

◆ TYPE_STANDARD

const ilLuceneSearcher::TYPE_STANDARD = 1

Definition at line 37 of file class.ilLuceneSearcher.php.

Referenced by ilSearchAutoComplete\getLuceneList().

◆ TYPE_USER

const ilLuceneSearcher::TYPE_USER = 2

Definition at line 38 of file class.ilLuceneSearcher.php.

Referenced by ilLuceneUserSearchGUI\performSearch().


The documentation for this class was generated from the following file: