У меня довольно простой вопрос.
Я использую couchdb-lucene для поиска в полном тексте моих документов.
Каждый из моих документов имеет следующие поля:
_id
_rev
docID (уникальный идентификатор документа из нашей системы)
заголовок (название документа)
содержание (тело документа)
userID (пользователь, которому принадлежит документ)
Мой проектный документ выглядит так:
{
"_id": "_design/lucene",
"_rev": "10-770b7044393e067b7024a896ccf3c502",
"fulltext": {
"by_all": {
"index": "function(doc) { var ret=new Document(); ret.add(doc.title); ret.add(doc.content); return ret }"
},
"by_title": {
"index": "function(doc) { var ret=new Document(); ret.add(doc.title); return ret }"
}
}
}
Я не мог понять, как вернуть docID как часть результатов, поэтому сейчас я просто сделал ID равным docID, но я хотел бы понять, как вернуть docID, так как проектный документ только выше возвращает счет и идентификатор документа. Я бы предпочел не устанавливать для идентификатора то же значение, что и для docID, просто для доступа к нему.
Когда я запускаю запрос, такой как:
* * +1025 локальный: 5984 / Foo / _fti / _design / Lucene / д = by_all Пример ~ 0.5f * +1026 *
Я получаю обратно коллекцию всех документов, где поле заголовка или содержимого содержит «пример», и это здорово, но как мне найти «пример» в полях заголовка и содержимого ТОЛЬКО документов, которые имеют определенный идентификатор пользователя ? Как я могу передать и использовать это значение?
Я хочу сделать что-то вроде этого:
* * Локальная тысяча тридцать один: 5984 / Foo / _fti / _design / Lucene / д = by_all Пример ~ 0.5f & = 123 идентификатор пользователь
Когда я делаю: localhost: 5984 / foo / _fti / _design / lucene / by_all? Q = пример ~ 0.5f возвращает документы для всех пользователей, что мне нужно сделать, чтобы ограничить документы только теми, которые принадлежат конкретный пользователь? Я не хочу искать каждый документ из миллионов, когда только несколько тысяч имеют отношение к конкретному пользователю.
Спасибо!
p.s. Я знаю, что могу использовать карту в представлениях: "map": "function (doc) {emit (doc._id, doc._rev)}"
Это актуально? Есть ли способ использовать карту в результатах couchdb-lucene? Я не мог понять, как указать, какое значение использовать в ключе для карты, поэтому он возвращал идентификатор по умолчанию, как можно установить ключ для использования определенного поля? Может быть, карта даже не верная дорожка ... Я не знаю, что здесь делать, я очень плохо знаком с CouchDB и Lucene и пока не совсем все понимаю.
Еще раз спасибо!