2013-05-02 78 views
1

我正在使用CouchDB-Lucene从我的数据库中的一些表中检索数据。问题是我必须解析这些数据才能知道我想将哪些数据放入我的lucene索引中。CouchDB-Lucene索引函数不能与外部代码一起工作

所以,我认为我可以使用我已经编写的类来处理数据。我可以使用CouchApp指令在我的索引函数中添加这个类。

结果看起来是这样的:

//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 

当我看到我的设计文档,似乎所有的代码正确添加,但是当我执行搜索,Lucene的说:“MyClass的不定义为“

如果我试图复制/粘贴手动所有“MyClass的”代码(因此不再使用CouchApp指令),Lucene的说,我的文档中有一个不正确的结局。

我错过了什么?


编辑:我删除了所有在这个问题上没有意义的真正的功能代码。

回答

0

我找到了解决我的问题:

我已经把我的外部代码中我的索引功能:

//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 
} 

我不知道为什么它的工作原理没有被映射函数内一个couchdb视图,但它不适用于lucene索引函数。

希望它有帮助! 此致,Mickaël

0

Is!供应商是否将您的MyClass代码嵌入“索引”值中?

当你包含MyClass代码时,你得到的错误听起来像是你自己的Javascript错误。 CouchDB-Lucene评估字符串使用犀牛这是一个完整的JavaScript引擎。

也许如果你包含完整的“索引”值,它会更明显。

+0

你是对的,我通过直接包括所有codre的错误是我的。 – 2013-05-03 12:40:45

+0

是的,我所有的“MyClass”代码都通过//!vendor指令添加到索引值中,索引如下所示: “index”:“function(doc){...} fuction MyClass(Data){ ...}” – 2013-05-03 12:49:07

相关问题