2014-11-10 2 views
2

Я знаю, что CouchDB можно использовать для локального создания приложения и переключения на Cloudant в стадии постановки/производства. Это также рассматривается в this question.Разработка приложения на основе облака локально

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

ответ

1

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, см. Выше ссылку, которую я опубликовал.

1

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

1

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

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