Ich versuche, eine Searchmachine in meine Website zu implementieren. Ich benutze dafür Zend_Search_Lucene.Zend_Search_Luncene Handle Querys
Der Index wird wie folgt erstellt:
public function create($config, $create = true)
{
$this->_config = $config;
// create a new index
if ($create) {
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()
);
$this->_index = Zend_Search_Lucene::create(APPLICATION_PATH . $this->_config->index->path);
} else {
$this->_index = Zend_Search_Lucene::open(APPLICATION_PATH . $this->_config->index->path);
}
}
{
public function addToIndex($data)
$i = 0;
foreach ($data as $val) {
$scriptObj = new Sl_Model_Script();
$scriptObj->title = $val['title'];
$scriptObj->description = $val['description'];
$scriptObj->link = $val['link'];
$scriptObj->tutorials = $val['tutorials'];
$scriptObj->screenshot = $val['screenshot'];
$scriptObj->download = $val['download'];
$scriptObj->tags = $val['tags'];
$scriptObj->version = $val['version'];
$this->_dao->add($scriptObj);
$i++;
}
return $i;
}
/**
* Add to Index
*
* @param Sl_Interface_Model $scriptObj
*/
public function add(Sl_Interface_Model $scriptObj)
{
// UTF-8 for INDEX
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::text('title', $scriptObj->title, 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::text('tags', $scriptObj->tags, 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::text('version', $scriptObj->version, 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::text('download', $scriptObj->download, 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::text('link', $scriptObj->link));
$doc->addField(Zend_Search_Lucene_Field::text('description', $scriptObj->description, 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::text('tutorials', $scriptObj->tutorials, 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::text('screenshot', $scriptObj->screenshot));
$this->_index->addDocument($doc);
}
Aber wenn ich versuche, den Index abfragen mit:
$ index-> find ('Wordpress 2.8. 1 '.' * ');
im den folgenden Fehler erhalten: "Nicht-Wildcard-Zeichen am Anfang des Musters erforderlich sind"
irgendwelche ideen wie für eine string wie mine zu fragen? eine Abfrage für "wordpress" funktioniert wie freigestellt.
danke, so ist es nur möglich, für ein "Wort" abzufragen? – opHASnoNAME
Nein, Sie könnten nach mehreren Wörtern mit nachfolgenden Präfixen suchen, sagen wir, Sie wollten alle Dokumente finden, die mit "kine" oder "dict" beginnen: name: kine * ODER name: dict * Grundsätzlich nur ODER die Klauseln zusammen. Beantwortet das Ihre Frage? –