[英]How to create index search in CouchDB?
我要尋找的解決方案基於此庫 。
{ “CouchDB的 - lucene” 的: “歡迎光臨”, “版本”: “1.1.0-快照”}
要使其運行,我必須使用mvn在根目錄中構建它,然后導航至目標並在解壓縮的ouchdb -lucene中運行命令./bin/run :
root@mario-VirtualBox:/home/mario/CouchDB_mario/couchdb-lucene/target/couchdb-lucene-1.1.0-SNAPSHOT# ./bin/run
您需要的全部都是以下代碼:
[httpd_global_handlers]
_fti = {couch_httpd_proxy, handle_proxy_req, <<"http://localhost:5985">>}
多虧了這一點,我終於能夠使用Apache Lucene索引查詢CouchDB。
curl -X PUT http://localhost:5984/user14169_slovnik_medical/_design/medical -d @user14169_slovnik_medical.json
JSON設計文檔如下所示:
{
"_id": "_design/medical",
"fulltext": {
"by_meaning": {
"index": "function(doc) { var ret=new Document(); ret.add(doc.vyznam); return ret }"
},
"by_shortcut": {
"index": "function(doc) { var ret=new Document(); ret.add(doc.zkratka); return ret }"
}
}
}
{ "_id": "63e5c848fa2211c3b063d6feccd3d942", "_rev": "1-899a6924ed08097b1a37e497d91726fd", "DATAWORKS_DOCUMENT_TYPE": "user14169_slovnik_medical", "vyznam": "End to side", "zkratka": "ets" }
然后,您可以輕松實現以下查詢:
http://localhost:5984/_fti/local/user14169_slovnik_medical/_design/medical/by_meaning?q=lob~
本地前綴是因為我正在1個節點上的localhost上運行數據庫,並且默認情況下,couchdb-lucene正在連接到localhost。
最酷的事情是,您可以使用Java中的客戶端API org.lightcouch jar庫並進行一些簡單的調用,如下所示:
CouchDbClient dbClient = new CouchDbClient("user14169_slovnik_medical", true, "http", "127.0.0.1", 5984, null, null);
String uriFullText = dbClient.getBaseUri() + "_fti/local/user14169_slovnik_medical/_design/medical/by_shortcut?q=lob*";
JsonObject result = dbClient.findAny(JsonObject.class, uriFullText);
System.out.println(result.toString());
要創建搜索索引,您需要創建一個“視圖”。 對此進行了很好的解釋: http : //guide.couchdb.org/editions/1/en/views.html
您可以直接從Futon進行操作,但首先應該使用一個小的數據集進行練習。
你不能 搜索是Cloudant功能,並且在任何當前版本的CouchDB中都沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.