Как индексировать массивы (теги) в CouchDB, используя couchdb-lucene - PullRequest
4 голосов
/ 01 мая 2010

Настройка:

У меня есть проект, который использует CouchDB. Документы будут иметь поле под названием «теги». Это поле «теги» представляет собой массив строк (например, «теги»: [«тег1», «тег2», «и т. Д.»]). Я использую couchdb-lucene в качестве поставщика поиска.

Вопрос:

Какую функцию можно использовать для получения couchdb-lucene для индексации элементов "тегов"?

Если у вас есть идея, но нет тестовой среды, напечатайте ее, я попробую и приведу результат здесь.

Ответы [ 2 ]

6 голосов
/ 02 мая 2010

Ну, это было довольно легко после того, как я понял это. Пожалуйста, поймите, что символ $ не имеет значения для кода, мои поля в этом случае просто начинаются с $. Разместил ответ для любого с таким вопросом в будущем.

function(doc) {
  var result = new Document();
  for(var i in doc.$tags) {
    result.add(doc.$tags[i]);
  }
  return result;
}
0 голосов
/ 19 декабря 2013

Возможно, синтаксис изменился, но вы можете создать представление для поиска по любому элементу в массиве документа:

function(doc) {
  for (var i=0; i<doc.page.length; i++) {
    emit(doc.page[i].url, doc._id);
    }
}
...