在Zend_Search_Lucene
我使用以下代码进行索引时,我已更改默认分析器以搜索数值。
public function executeIndexIT() {
$path = '/home/project/mgh/lib/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once '/home/project/mgh/lib/Zend/Search/Lucene.php';
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());
$index = new Zend_Search_Lucene('/home/project/mgh/data/search_file/lucene.customer.index',true);
$filenames1='/home/project/mgh/web/cvcollection/data8/ASBABranches10546.pdf';
$filenames2='/home/project/mgh/web/cvcollection/data2/manoj_new10550.pdf';
$fc1=htmlentities("'".$this->ConvertPDF($filenames1)."'");
$fc2=htmlentities("'".$this->ConvertPDF($filenames2)."'");
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::unIndexed('URL', $filenames1));
$doc->addField(Zend_Search_Lucene_Field::text('contents',$fc1));
$index->addDocument($doc);
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::unIndexed('URL', $filenames2));
$doc->addField(Zend_Search_Lucene_Field::text('contents',$fc2));
$index->addDocument($doc);
$index->commit();
exit;
}
在为搜索建立索引后,我正在使用以下代码:
public function executeSearchLucene() {
$path = '/home/project/mgh/lib/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once('Zend/Search/Lucene.php');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());
$hits = array();
$txtSearch='@';
try {
$query = Zend_Search_Lucene_Search_QueryParser::parse($txtSearch);
} catch (Zend_Search_Lucene_Search_QueryParserException $e) {
echo "Query syntax error: " . $e->getMessage() . "\n";
}
$index = new Zend_Search_Lucene('/home/project/mgh/data/search_file/lucene.customer.index');
//**added on 29 may**/
$results = $index->find($query);
echo count($results);
foreach ( $results as $result ) {
echo "<pre>";
var_dump($result->URL);
}
exit;
}
这里$fc2
包含几个电子邮件地址,我需要搜索它们。但我得到 0 次点击。
如何搜索喜欢@
或!
使用的字符Zend_Search_Lucene
?