Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 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();
       }*/
 }
Ejemplo n.º 3
0
 function __get($var)
 {
     if ($var === 'thisown') {
         return swig_xapian_get_newobject($this->_cPtr);
     }
     return XapianDatabase::__get($var);
 }
Ejemplo n.º 4
0
/**
 * 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;
    }
}
Ejemplo n.º 5
0
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);
}

}
Ejemplo n.º 6
0
    $title = "{$uri}<span style='color:#0000CC;{$text_deco};font-size:medium'>{$ligne["PERCENT"]}%&nbsp;{$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;'>&laquo&nbsp;<strong>{$file}</strong>&nbsp;&raquo;&nbsp;-&nbsp;{$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";