2013-05-02 79 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

相關問題