2009-11-10 7 views
1

Existe-t-il un moyen de stocker un tableau en tant que champ de document, puis interroger ce tableau?Recherche Zend_Search_Lucene dans le tableau

J'ai une collection d'articles qui sont étiquetés. Je voudrais être en mesure de rechercher tous les éléments qui correspondent par exemple aux balises 55 et 67.

Comment pourrais-je y parvenir?

Répondre

0

Vous devez d'abord créer un fichier d'index avec les données de votre tableau. La documentation couvre comment créer un new index.

donc imaginer votre tableau ressemble

$data = array(
    array(
    'tag' => '55 67', 
    'content' => 'Lorem Ipsu 1', 
    'url' => 'http://foobar.net/content.php?id=1' 
), 
    array(
    'tag' => '32 67' 
    'content' => 'Lorem Ipsu 2', 
    'url' => 'http://foobar.net/content.php?id=2' 
) 
); 

cela donnerait quelque chose comme ça pour créer votre index

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


foreach($data as $row){ 
    $doc = new Zend_Search_Lucene_Document(); 
    // Store document URL to identify it in the search results 
    $doc->addField(Zend_Search_Lucene_Field::Text('url', $row['url'])); 

    // Store document TAGS 
    $doc->addField(Zend_Search_Lucene_Field::Text('tag', $row['tag'])); 

    // Index document contents 
    $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $row['content'])); 

    // Add document to the index 
    $index->addDocument($doc); 
} 

enfin query votre fichier d'index

$index = Zend_Search_Lucene::open('/data/my_index'); 

$hits = $index->find('tag:55 AND tag:67'); 

foreach ($hits as $hit) { 
    echo $hit->score; 
    echo $hit->url; 
    echo $hit->tag; 
} 

Note

Je ne sais pas exactement pourquoi vous avez l'intention d'utiliser Lucene pour faire un tel travail, si vous voulez juste une liste d'article correspondant à n'importe quel tag serait plus facile de le faire avec des requêtes SQL.

Après si vous voulez savoir comment Zend_Search_Lucene œuvres qui pourraient être un exemple

+0

sans aucun rapport. Je demandais si je pouvais stocker le tableau en tant que champ de document et ensuite chercher dans ce champ. Mais merci pour la longue réponse de toute façon. –

+0

@Apikot: ha ouais complètement, autant que je sache, vous ne pouvez pas stocker des tableaux dans l'index. – RageZ

+1

Votre réponse ne me fonctionne pas. Je n'obtiens aucun résultat. –

Questions connexes