Zend_Search_Lucene - How to add filtering to queries?

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Zend_Search_Lucene - How to add filtering to queries?

kevin
Hello,

Based on the following search index build code I am trying to figure out how to add "filtering by secondary fields" to a query. I will explain below.


Here is the search index build code.

<?php
// Create search index
$index = Zend_Search_Lucene::create($indexPath);

$articles = getArticles();

foreach($articles as $article) {

        // Create new Document
        $doc = new Zend_Search_Lucene_Document();

        // Index article id
        $doc->addField(Zend_Search_Lucene_Field::Keyword('article_id', $article['id']));

        // Index author id
        $doc->addField(Zend_Search_Lucene_Field::Keyword('author_id', $article['author_id']));

        // Index category id
        $doc->addField(Zend_Search_Lucene_Field::Keyword('category_id', $article['category_id']));

        // Index title
        $doc->addField(Zend_Search_Lucene_Field::UnStored('title', $article['title']));

        // Index body
        $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $article['body']));

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

}

$index->optimize();
$index->commit();



Here is an example of performing a search query.

$terms = "keywords here";
$query = Zend_Search_Lucene_Search_QueryParser::parse($terms);
$hits  = $index->find($query);


Based upon the above index build code, how could i "filter" the given search query code to allow me to add filters to the query.

Filters such as
1) limiting the search query results to a list of author ids
2) limiting the search query results to a list of category ids


Any help on this would be much appreciated. I found the ZF manual confusing when it comes to building query building.

Thanks!