CouchDB-Lucene索引函数不适用于外部代码

时间:2013-05-02 12:21:54

标签: couchdb couchapp couchdb-lucene

我正在使用CouchDB-Lucene从我的数据库中的某些表中检索数据。问题是我必须解析那些数据才能知道我想在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说我的文档结尾不正确。

我错过了什么?


编辑:我删除了所有真正的功能代码,这个代码没有任何意义。

2 个答案:

答案 0 :(得分:0)

供应商是否将您的MyClass代码内联到“索引”值?

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

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

答案 1 :(得分: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视图的map函数内部工作,但它不适用于lucene索引函数。

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