2013-05-02 3 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 говорит, что у моего документа неправильный финал.

Что мне не хватает?


EDIT: Я удалил все свои реальные функциональные коды, которые не имеют смысла в этом вопросе.

ответ

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.

Надеюсь, это поможет! С уважением, Микаэль

0

Является ли поставщик, вставляющий ваш код MyClass в значение «индекс»?

Ошибка, которую вы получили, когда вы включили свой код MyClass, напрямую звучит как ошибка Javascript. CouchDB-Lucene оценивает использование строки Rhino, которая является полным движком Javascript.

Возможно, если вы включите полное «индексное» значение, это будет более очевидно.

+0

Вы правы, ошибка, с которой я столкнулся, включая все кодеры, это моя. –

+0

И да, весь мой код «MyClass» добавляется в значение индекса с директивой //! Vendor, индекс выглядит следующим образом: «index»: «function (doc) {...} fuction MyClass (Data) { ...}» –

Смежные вопросы