Bu temel arama fonksiyonu iş yapma ile biraz yardım (Zend Lucene)

1 Cevap php

Ben, bugüne kadar test.php iki php dosyaları var:

<?php
    		include("../config_conn_fordon_db.php");
    		include("../config_open_db.php");
    		// Fix Special Characters
    		mysql_query("SET NAMES 'utf8'") or die(mysql_error()); 
    		mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error());

    		$root = realpath($_SERVER["DOCUMENT_ROOT"]);
    		set_include_path($root.'/SV/bincgi/zend/library/');
    		require_once('/library/Zend/Db/Adapter/Pdo/Mysql.php');
    		require_once('/library/Zend/Search/lucene.php');

    		$db = Zend_Db::factory('Pdo_Mysql', array(
    		'host'     => 'localhost',
    		'username' => 'user',
    		'password' => 'password',
    		'dbname'   => 'fordon_db'
    		));
    		$query="SELECT * FROM cars_db";
    		$result = $db->fetchAll($query, 2);
    		echo $result[0]['headline'];


    		$index = Zend_Search_Lucene::create('/hej/test', true);
    		$doc = new Zend_Search_Lucene_Document();

    		$doc->addField(Zend_Search_Lucene_Field::Keyword('headline', $result[0]['headline']));
    		$index->addDocument($doc);
    		$index->commit();

?>

VE search.php:

<?php
    		include("../config_conn_fordon_db.php");
    		include("../config_open_db.php");
    		// Fix Special Characters
    		mysql_query("SET NAMES 'utf8'") or die(mysql_error()); 
    		mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error());

    		$root = realpath($_SERVER["DOCUMENT_ROOT"]);
    		set_include_path($root.'/SV/bincgi/zend/library/');
    		//require_once('/library/Zend/Db/Adapter/Pdo/Mysql.php');
    		require_once('/library/Zend/Search/lucene.php');

    		/*$db = Zend_Db::factory('Pdo_Mysql', array(
    		'host'     => 'localhost',
    		'username' => 'user',
    		'password' => 'password',
    		'dbname'   => 'fordon_db'
    		));
    		$query="SELECT * FROM cars_db";
    		$result = $db->fetchAll($query, 2);
    		echo $result[0]['headline'];
    		*/

    		$index = Zend_Search_Lucene::open('/hej/test', true);
    		//$doc = new Zend_Search_Lucene_Document();
    	    echo "Index contains {$index->count()} documents.\n";
    		$query = "";
    		$hits = $index->find($query);
    		echo "Search for \"$query\" returned " .count($hits). " hits.\n\n";
    		echo "HEADLINE: "; echo $hits->headline;

?>

Ben Öncelikle ben hiç bir sonuç alamadım, burada iki sorun var. 'Başlık' değeri gerçekte eklenen (veya dizine) ise olması gerektiği gibi ben emin değilim, o proberly endeksli olup olmadığını denetlemek için yine de var mı?

İkincisi, ben bu hata mesajını alıyorum:

Notice: Trying to get property of non-object in C:\wamp\www\SV\bincgi\zend\search.php on line 30

Ben Başlık yankı search.php son satırı hangi ...

Ne yapmaya çalışıyorum ben onları sonra arama yapabilirsiniz, böylece bir mysql tablosu ve dizin onları tüm 'başlık' alanları almak için, ama şu anda sadece bir ile başladım.

Teşekkürler

BTW: echo $ result zaman test.php içinde [0] ['başlık'] ben mysql tablo alanından sonuç almak, bu yüzden bu kadar çalışıyor!

1 Cevap

$hits = $index->find($query);

Döndürülen değer bir dizidir; Eğer bu hata mesajı alıyorum neden olmasıdır.

Döndürülen değeri normalde aşağıdaki gibi bir kod kullanılır:

foreach ($hits as $hit) {
    $title    = $hit->title;
    $contents = $hit->contents;
    ...
}