/** * Return a list of posts that are similar to the current post */ public function get_similar_posts($post, $max_recommended = 5) { $guid = $this->get_uid($post); $posting = $this->_database->postlist_begin($guid); $enquire = new XapianEnquire($this->_database); $rset = new XapianRset(); $rset->add_document($posting->get_docid()); $eset = $enquire->get_eset(20, $rset); $i = $eset->begin(); $terms = array(); while (!$i->equals($eset->end())) { $terms[] = $i->get_term(); $i->next(); } $query = new XapianQuery(XapianQuery::OP_OR, $terms); $enquire->set_query($query); $matches = $enquire->get_mset(0, $max_recommended + 1); $ids = array(); $i = $matches->begin(); while (!$i->equals($matches->end())) { $n = $i->get_rank() + 1; if ($i->get_document()->get_value(self::XAPIAN_FIELD_ID) != $post->id) { $ids[] = $i->get_document()->get_value(self::XAPIAN_FIELD_ID); } $i->next(); } return $ids; }
public function testAction() { //$config = Yaf_Registry::get('config'); $database = new XapianDatabase("/develop/cha.internal.zhaoquan.com/service/data/gamedb"); $indexer = new XapianTermGenerator(); $document = new XapianDocument(); var_dump($database->get_lastdocid()); var_dump($database->get_doccount()); $a = $document->get_docid(); var_dump($database->get_document(2)->termlist_count()); $i = $database->get_document(50000)->termlist_begin(); while (!$i->equals($database->get_document(50000)->termlist_end())) { var_dump($i->get_term()); $i->next(); } var_dump($i); /*$i = $database->termlist_begin(1); while (!$i->equals($database->termlist_end(10))){ var_dump($i->get_description()); $i->next(); }*/ }
function __get($var) { if ($var === 'thisown') { return swig_xapian_get_newobject($this->_cPtr); } return XapianDatabase::__get($var); }
/** * Retrieve a list db terms * * @param int $count Number of terms to retrieve * @param char $prefix The prefix of the term to retrieve * @param XapianDatabase $db Xapian database to connect * @return array */ function xapian_get_all_terms($count = 0, $prefix, $db = NULL) { try { if (!is_object($db)) { $db = new XapianDatabase(XAPIAN_DB); } if (!empty($prefix)) { $termi = $db->allterms_begin($prefix); } else { $termi = $db->allterms_begin(); } $terms = array(); $i = 0; for (; !$termi->equals($db->allterms_end()) && (++$i <= $count || $count == 0); $termi->next()) { $terms[] = array('frequency' => $termi->get_termfreq(), 'name' => $termi->get_term()); } return $terms; } catch (Exception $e) { display_xapian_error($e->getMessage()); return NULL; } }
function tests(){ include_once("ressources/class.xapian.inc"); // Open the database for searching. try { $database = new XapianDatabase("/home/dtouzeau/Documents/doc1.db"); $database1=new XapianDatabase("/home/dtouzeau/Documents/doc1.db"); $database->add_database($database1); // Start an enquire session. $enquire = new XapianEnquire($database); // Combine the rest of the command line arguments with spaces between // them, so that simple queries don't have to be quoted at the shell // level. $query_string = "david"; $qp = new XapianQueryParser(); $stemmer = new XapianStem("english"); $qp->set_stemmer($stemmer); $qp->set_database($database); $qp->set_stemming_strategy(XapianQueryParser::STEM_SOME); $query = $qp->parse_query($query_string); print "Parsed query is: {$query->get_description()}\n"; // Find the top 10 results for the query. $enquire->set_query($query); $matches = $enquire->get_mset(0, 10); // Display the results. print "{$matches->get_matches_estimated()} results found:\n"; $i = $matches->begin(); while (!$i->equals($matches->end())) { $n = $i->get_rank() + 1; $data = $i->get_document()->get_data(); print "$n: {$i->get_percent()}% docid={$i->get_docid()} [$data]\n\n"; $i->next(); } } catch (Exception $e) { print $e->getMessage() . "\n"; exit(1); } }
$title = "{$uri}<span style='color:#0000CC;{$text_deco};font-size:medium'>{$ligne["PERCENT"]}% {$title}</span></a>"; $body = $ligne["DATA"]; $body = wordwrap($body, 100, "<br />\n"); $img = "img/file_ico/unknown.gif"; $file = basename($ligne["PATH"]); $ext = $f->Get_extension(strtolower($file)); if (is_file("img/file_ico/{$ext}.gif")) { $img = "img/file_ico/{$ext}.gif"; } $html = "\n\t\n\t<table style='width:99%;margin-top:6px'>\n\t<tr>\n\t\t<td>\n\t\t<table style='width:100%'>\n\t\t<tr>\n\t\t\t<td valign='top' width=1%><img src='{$img}'></td>\n\t\t\t<td valign='top' width=1%>" . imgtootltip("folderopen.gif", "{path}:{$ligne["PATH"]}<br>{size}:{$ligne["SIZE"]}<br>{date}:{$ligne["TIME"]}") . "</td>\n\t\t\t<td valing='top'>{$title}</td>\n\t\t</tr>\n\t\t</table>\n\t</tr>\n\t<tr>\n\t<td><span style='font-size:small;color:#676767;'>« <strong>{$file}</strong> » - {$ligne["TIME"]}</span></td>\n\t</tr>\n\t<tr>\n\t<td style='font-size:11px;'>{$body}</td>\n\t</tr>\n\t<tr>\n\t<td style='font-size:small;color:green;' align='left'>{$ligne["TYPE"]} ({$ligne["SIZE"]})</td>\n\t</tr>\t\n\t</table>\n\t"; return $html; } include_once "ressources/class.xapian.inc"; // Open the database for searching. try { $database = new XapianDatabase("/home/dtouzeau/Documents/doc1.db"); $database1 = new XapianDatabase("/home/dtouzeau/Documents/doc1.db"); $database->add_database($database1); // Start an enquire session. $enquire = new XapianEnquire($database); // Combine the rest of the command line arguments with spaces between // them, so that simple queries don't have to be quoted at the shell // level. $query_string = "david"; $qp = new XapianQueryParser(); $stemmer = new XapianStem("english"); $qp->set_stemmer($stemmer); $qp->set_database($database); $qp->set_stemming_strategy(XapianQueryParser::STEM_SOME); $query = $qp->parse_query($query_string); print "Parsed query is: {$query->get_description()}\n";