CouchDB-Lucene索引函数不';不能使用外部代码

CouchDB-Lucene索引函数不';不能使用外部代码,couchdb,couchapp,couchdb-lucene,Couchdb,Couchapp,Couchdb Lucene,我正在使用CouchDB Lucene从数据库中的一些表中检索数据。问题是,我必须解析这些数据,才能知道我想把哪些数据放在我的lucene索引中 所以,我想我可以使用我已经编写的类来处理数据。我可以使用CouchApp指令在我的索引函数中添加这个类 结果如下所示: //索引函数 功能(doc){ var myClass=新的myClass(文档数据); var ret=新文档(); ret.add(myClass.getResult()); 返回ret; } //CouchApp指令: //!

我正在使用CouchDB Lucene从数据库中的一些表中检索数据。问题是,我必须解析这些数据,才能知道我想把哪些数据放在我的lucene索引中

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

结果如下所示:

//索引函数
功能(doc){
var myClass=新的myClass(文档数据);
var ret=新文档();
ret.add(myClass.getResult());
返回ret;
}
//CouchApp指令:
//! 供应商/couchapp/MyClass.js
当我查看我的设计文档时,似乎所有的代码都正确添加了,但是当我执行搜索时,lucene说“MyClass没有定义”

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

我错过了什么



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

是!供应商是否将MyClass代码内联到“索引”值中

直接包含MyClass代码时出现的错误听起来像是您自己的Javascript错误。CouchDB Lucene评估字符串use Rhino,它是一个完整的Javascript引擎


如果包含完整的“索引”值,可能会更加明显。

我找到了解决问题的方法:

我必须将外部代码放入索引函数中:

//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视图的map函数中工作,但是对于lucene索引函数却不行

希望有帮助!
您好,Mikaël

您说得对,我直接包含所有codre的错误是我的。是的,我所有的“MyClass”代码都与//一起添加到索引值中!供应商指令索引如下所示:“索引”:“函数(doc){…}函数MyClass(数据){…}”