Локальная разработка приложения на основе Cloudant

Я знаю, что CouchDB можно использовать для локальной разработки приложения и перехода на Cloudant в staging/production. Это также рассматривается в этом вопросе.

Но как разработать функциональные возможности приложения, для которого требуется поиск Lucene в Cloudant? Есть ли способ эмулировать его локально?


person theDmi    schedule 10.11.2014    source источник


Ответы (3)


Дмитрий, у меня не было большого опыта работы с 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

Здесь localhost:5985 — это URL-адрес вашего сервиса CouchDB-Lucene. Конечно, вы можете изменить порт, который прослушивает Lucene, в файле конфигурации coachdb-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, обратитесь к приведенной выше ссылке, которую я разместил.

person user3278897    schedule 12.12.2014

Уже есть библиотека для включения Apache Lucene в CouchDB, CouchDB Lucene. Но, честно говоря, я не скрещу пальцы и пожелаю, чтобы это работало с Cloudant, потому что, скорее всего, они разработали свой собственный мост между CloudantDB и Apache Lucene.

person Chiron    schedule 10.11.2014

CouchDB Lucene действительно помогает индексировать с помощью Lucene, но он не работает точно так же, как облачный. Например, для cloudant есть встроенная индексная функция, но нет такой функции для Couchdb Lucene. .

person Powpow    schedule 21.01.2015