我正在使用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说我的文档结尾不正确。
我错过了什么?
答案 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