У меня есть два php-файла, test.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::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();
?>
И 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;
?>
У меня здесь две проблемы, во-первых, я вообще ничего не получаю. Я не уверен, действительно ли значение 'заголовка' вставлено (или проиндексировано) так, как должно быть, есть ли способ проверить, правильно ли оно проиндексировано?
Во-вторых, я получаю это сообщение об ошибке:
Notice: Trying to get property of non-object in C:\wamp\www\SV\bincgi\zend\search.php on line 30
- последняя строка в search.php, где я повторяю заголовок ...
То, что я пытаюсь сделать, - это извлечь все поля заголовков из таблицы mysql и проиндексировать их, чтобы потом можно было их искать, но сейчас я начинаю только с одного.
Спасибо
Кстати: когда я отображаю $ result [0] ['headline'] в test.php, я получаю результат из поля таблицы mysql, так что он работает так далеко!