使用Zend_Search_Luce将MySql数据获取到索引中时出现问题


Problems getting MySql data into an index using Zend_Search_Lucene

尝试使用Zend_Search_Luce搜索MySql数据库并显示结果。正在运行以下代码,但无法弄清楚为什么我的索引中没有任何信息。PHP、MySql和Zend都很新,但上周我一直在尝试自己解决这个问题,并耗尽了我能找到的所有资源。无论如何,我呼应了数据库中的内容,以确保我的查询正常。它也可以创建索引文件,但当我用Luke Toolbox查看它时,我只得到一个用鹅蛋填充的字段列表。为了确保我正确使用了它,我使用Zend_Feed找到了一些代码,并通过Lukes运行了这些代码,得到了各种结果。还可以在我的结果测试页面上从相同的代码中获得结果,但使用下面的代码时会得到0。虽然计数告诉我已经索引了5个文档(这是我在数据库表中的行数),但我似乎无法索引数据库信息,并且我没有得到任何错误。库脚本只是一个自动加载器脚本,我在其中设置了数据库连接,我已经确认它也能正常工作。尽管我可能错过了显而易见的东西,或者展示了我真正的新手,但任何帮助都将不胜感激。谢谢

<?php>
require_once('scripts/library.php');
require_once ('Zend/Search/Lucene.php');
$index = Zend_Search_Lucene::create('./docindex');
$sql = ('SELECT * FROM news');
foreach ($db->query($sql) as $row){
 echo $row ['author'];
 echo $row['headline'];
 echo $row ['source'];
 }
foreach ($row as $document){ 
$document = new Zend_Search_Lucene_Document ();
    $document->addField(Zend_Search_Lucene_Field::Text ('author', $docAuthor));
    $document->addField(Zend_Search_Lucene_Field::Text ('headline', $docHeadline));
    $document->addField(Zend_Search_Lucene_Field::Text ('source', $docSource));
    $document->addField(Zend_Search_Lucene_Field::Unstored ('contents', $docStory)); 
$index->addDocument($document); 
}
   $index->commit();
echo $index->count()." documents have been indexed.'n";
?>

看起来你有一个额外的foreach(),它实际上什么都没做,我看不出你的数据变量被分配到了哪里,试试看,它应该很接近:

<?php
require_once('scripts/library.php');
require_once ('Zend/Search/Lucene.php');
$index = Zend_Search_Lucene::create('./docindex');
$sql = ('SELECT * FROM news');
foreach ($db->query($sql) as $row) {
    echo $row ['author'];
    echo $row['headline'];
    echo $row ['source'];
    $document = new Zend_Search_Lucene_Document ();
    //you use an unindexed field for the id because you want the
    //id to be included in the search results but not searchable
    $document->addField(Zend_Search_Lucene_Field::unIndexed('id', $row['id']));
    $document->addField(Zend_Search_Lucene_Field::Text('author', $row ['author']));
    $document->addField(Zend_Search_Lucene_Field::Text('headline', $row['headline']));
    $document->addField(Zend_Search_Lucene_Field::Text('source', $row ['source']));
    $document->addField(Zend_Search_Lucene_Field::Unstored('contents', $row['docStory']));
    $index->addDocument($document);
}
$index->commit();
echo $index->count() . " documents have been indexed.'n";
?>