Search code examples
couchdbcouchappcouchdb-lucene

CouchDB-Lucene index function doesn't work with external code


I'm using CouchDB-Lucene for retrieving data from some of my tables in my database. The thing is that I have to parse that data to know which ones I want to put in my lucene index.

So, I thought that I could use a class that I already wrote to process the data. And that I could use CouchApp directives to add this class in my index function.

The result looks like this:

//Index Function
function (doc) {
   var myClass = new MyClass(doc.Data);
   var ret = new Document();

   ret.add(myClass.getResult());

   return ret;
}

//CouchApp directives:
//! vendor/couchapp/MyClass.js

When I look at my design document, it seems that all the code is correctly added, but when I execute a search, lucene says that "MyClass is not defined".

If I try to copy/paste all "MyClass" code manually (and therefore no longer using the CouchApp directive), lucene says that my document has an incorrect ending.

What am I missing?


EDIT: I removed all my real function code which has no point in the issue.


Solution

  • I found the solution to my issue:

    I have to put my external code INSIDE my index function:

    //Index Function
    function (doc) {
       var myClass = new MyClass(doc.Data);
       var ret = new Document();
       ret.add(myClass.getResult());
    
       return ret;
    
       //CouchApp directives:
       //! vendor/couchapp/MyClass.js
    }
    

    I don't know why it works without being inside the map function for a couchdb view, but it doesn't for a lucene index function.

    Hope it helps! Regards, Mickaël