[Risolto] Problema con Zend_Search_Lucene

Ciao ragazzi,

sto facendo delle prove con Lucene e riscontro un errore che non capisco.

Le righe di codice sono pochissime:

include('Zend/Search/Lucene.php');

$index = Zend_Search_Lucene::create('data/index');

$doc = new Zend_Search_Lucene_Document();

$doc->addField(Zend_Search_Lucene_Field::Text('label', 'label'));
$doc->addField(Zend_Search_Lucene_Field::Text('uri', 'risorsa uri'));
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('id', 24));
      
// aggiunge le tuple all'indice di Lucene
$index->addDocument($doc);

Mi restituisce

Fatal error: Cannot redeclare class Zend_Search_Lucene_Storage_File_Filesystem in C:\xampp\php\PEAR\Zend\Search\Lucene\Storage\File\Filesystem.php  on line 219

inviato 6 anni fa
Kaesar83
modificato 6 anni fa
Mario Santagiuliana
X 0 X

Immagino che il problema sia qua:

$index = Zend_Search_Lucene::create('data/index');

Stai richiamando lo script ma hai già creato l'indice.

Invece di ricrearlo, prova ad aprirlo con "open" (va al posto di create).

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ok ho corretto...era per via del fatto che una cartella simile era già presente.

Ora però ho un altro problema.

Son riuscito a creare un indice con oltre 49000 entry, se provo a fare una query all'indice mi viene restituito il risultato ma solo usando Zend_Search_Lucene_Search_QueryParser::parse($q), se invece provo ad usare metodi più evoluti al fine di ottenere query specifiche non mi viene restituito alcun risultato.

Ad esempio se uso

$term  = new Zend_Search_Lucene_Index_Term($q);
$query = new Zend_Search_Lucene_Search_Query_Fuzzy($term, 0.8);

dove $q è ad esempio "Apocalipse" dovrebbe restituirmi Apocalypse no?

Stesso discorso se uso

$q = "Apocalipse now";   
$terms = explode(" ", $q);
$query = new Zend_Search_Lucene_Search_Query_Phrase();
foreach($terms as $token) {
$query->addTerm(new Zend_Search_Lucene_Index_Term($token));
}

Sapete mica da cosa può dipendere?

risposto 6 anni fa
Kaesar83
modificato 6 anni fa
X 0 X

Hai già letto attentamente la documentazione ufficiale vero?

http://framework.zend.com/manual/en/zend.search.lucene.searching.html

Mi sembra esaustiva...

Ottieni errori per caso?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Certo che l'ho letta...la cosa strana è proprio quella, non ottengo errori.

Per la query_fuzzy sulla guida dice poco e quel poco l'ho applicato alla lettera ma non mi restituisce il risultato voluto, non capisco perchè!

risposto 6 anni fa
Kaesar83
X 0 X

Ok ho risolto, durante la creazione dell'indice creavo l'id, invece di farlo fare automaticamente a Lucene.

$doc->addField(Zend_Search_Lucene_Field::UnIndexed('id', $row['id']));

Ho ripetuto l'operazione facendo creare l'id automaticamente e il tutto ha funzionato, quindi immagino che dipendesse da quello.

risposto 6 anni fa
Kaesar83
X 0 X

Sarà sicuramente per quello :)

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda