1

我正在使用 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 is not defined"

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

我错过了什么?


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

4

2 回答 2

0

!vendor 是否将您的 MyClass 代码内联到“索引”值中?

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

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

于 2013-05-03T12:23:47.047 回答
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 索引函数。

希望能帮助到你!问候, 米凯尔

于 2013-05-13T08:39:20.023 回答