Dmi, у меня не было большого опыта работы с Cloudant. Но, согласно CouchDB Lucene, мы можем эмулировать его локально и по этой ссылке: https://docs.cloudant.com/api/search.html Я думаю, что CouchDB Lucene работает хорошо (мы эмулируем локально) на Cloudant.
Следуйте этим шаги:
1) Выполните официальные инструкции по установке здесь: https://github.com/rnewson/couchdb-lucene#build-and-run-couchdb-lucene
2) После этого, вам придется отредактировать файл конфигурации CouchDB (/etc/couchdb/local.ini), добавив следующие параметры:
timeout = 60000
[httpd_global_handlers]
_fti = {couch_httpd_proxy, handle_proxy_req, <<"http://localhost:5985">>}
[couchdb]
timeout = 60000
Н ere, localhost: 5985 - это URL-адрес вашего сервиса CouchDB-Lucene. Конечно, вы можете изменить порт lucene, который прослушивается в файле конфигурации couchdb-lucene.ini.
3) Создайте новый проектный документ в CouchDB, назовем его _design/lucene. Вот как это выглядит (как всегда при создании проектной документации, будьте осторожны, чтобы избежать вашего JavaScript функции):
{
"_id": "_design/lucene",
"_rev": "23-b7e715e927d362bc2de8d7716a29947f",
"fulltext": {
"people": {
"index": "function(doc) {\n\tvar ret = new Document();
\n\tret.add(doc.gender,{'field':'gender', 'store':'yes'});
\n\tret.add(doc.age,{'field':'age', 'store':'yes'});
\n\tret.add(doc.name,{'field':'name', 'store':'yes'});
\n\tret.add(doc.city,{'field':'city', 'store':'yes'});
\n\tret.add(doc.lastEmployer,{'field':'lastEmployer', 'store':'yes'});
\n\treturn ret;\n}"
}
}
}
4) Теперь вопрос, как отправить запросы на ваш вновь созданный индекс Lucene:
попробовать так:
http://127.0.0.1:5984/_fti/local/dbname/_design/lucene/people?q=gender:F
AND age:[20 TO 40] AND city:s*&force_json=true&include_docs=true&sort=age
Здесь «люди» - это имя вашего индекса, как определено в проектном документе.
Для полной ссылки на синтаксис вы можете ознакомиться с официальной документацией (http://lucene.apache.org/core/2_9_4/queryparsersyntax.html).
Я не думал, что любые изменения для их запросов Lucene для запуска Cloudant, см. Выше ссылку, которую я опубликовал.