9. CouchDB Lucene QueriesΒΆ

If you are using the CouchDB-Lucene integration you can make use of Lucene querying with Doctrine CouchDB ODM.

See the docs of CouchDB Lucene how you can create a design document with views for Lucene.

You can use the design-doc API of Doctrine, for example:

<?php

use Doctrine\ODM\CouchDB\View\DesignDocument;

class LuceneQueryDesignDoc implements DesignDocument
{
    public function getData()
    {
        return array(
            "fulltext" => array(
                "by_name" => array(
                    "index" => "function(doc) {
                        var ret = new Document();
                        ret.add(doc.name);
                        ret.add(doc.type, {field: \"type\"});
                        return ret;
                    }"
                )
            ),
        );
    }
}

You can use the CouchDB Client to create the design document for this lucene view.

When you have created a CouchDB Lucene view you can query it with Doctrine using the DocumentManager#createLuceneQuery($designDocName, $viewName) method. A lucene query instance extends AbstractQuery like the Doctrine CouchDB Map-Reduce queries.

An example showing all the functionalities of a lucene query looks like:

$query = $dm->createLuceneQuery("designDocName", "viewName");
$result = $query->setQuery("+bar -foo")
      ->setSkip(20)
      ->setLimit(100)
      ->setIncludeDocs(true)
      ->onlyDocs(true)
      ->setStale(false)
      ->setAnalyzer($analyzer)
      ->execute();

The result works as explained in the View and Map-Reduce Queries section.

Project Versions

Previous topic

8. Views and Map-Reduce Queries

Next topic

10. Attachments

This Page

Fork me on GitHub