2016-04-11 12 views
1

Örnek db için arama indeksi oluşturdum ve scouessfully içinde bir arama sorgusunu çalıştırıyorum. Örneğin, ben gibi bir veritabanı vardı: "Sınıf" ı arama dizinini oluşturabilir "_ID" veya indeksleme içinJson in cloudant için bina arama dizini

{ 
    "_id": "aardvark", 
    "_rev": "3-fe45a3e06244adbe7ba145e74e57aba5", 
    "min_weight": 40, 
    "max_weight": 65, 
    "min_length": 1, 
    "max_length": 2.2, 
    "latin_name": "Orycteropus afer", 
    "wiki_page": "http://en.wikipedia.org/wiki/Aardvark", 
    "class": "mammal", 
    "diet": "omnivore" 
} 

olarak: Ancak

function(doc){ 
    index("default", doc._id); 
... 
} 

veya

function(doc){ 
    index("default", doc.class); 
... 
} 

, ben Json formatında nasıl endeksleneceğini bilmiyorum.

"_id": "08ff683d86484139", 
    "_rev": "4-cf6f34c6a2a22780a646b86a3f8d1848", 
    "lastUpdated": "2014-01-31 00:00:00", 
    "issueId": 62655, 
    "isThirdParty": true, 
    "dateCreated": "2014-01-29 00:00:00", 
    "attributeCollection": { 
    "attributeArray": [ 
     { 
     "updateable": false, 
     "lookup": "issuetype", 
     "issueAttributeDefinitionId": 13, 
     "attributeType": 1, 
     "name": "Web Type", 
     "value": [ 
      "Improper Neutralization of Input During Web Page Generation" 
     ] 
     }, 
"appReleaseId": 57, 
    "hash": "953b33eca52938ab2d21e27eb171998b" 
} 

sorum nasıl Json biçimi "AttributeCollection" dizin özelliklerini şudur: Örneğin, ben bir Json biçimi vardır. Özellikle, nasıl bir alt belgenin bir dizi sahada json dizin oluşturabilirsiniz inanmıyorum, ancak sorgulamak için bir arama indeksi oluşturabilir

"name": "Web Type", 

ve

"value": ["Improper Neutralization of Input During Web Page Generation"] 
+0

Nguyen, Çözmeyi denediğim kullanım örneğinin ad ve/veya değer üzerinde filtreleme ile ilgili olduğunu varsayıyorum. Bunu yapmak için bir çözüm sağladım, ancak "json" dizinlerini kullanmıyor. Aşağıdaki cevap kullanım durumunuzu çözmezse lütfen eksik olduğu yeri bildirin. Teşekkürler! – markwatsonatx

cevap

2

için endeksi Belge yapınıza bağlı olarak name ve value alanları. Cloudant gösterge tablosunda

  1. + sonraki Tasarım Belgeler dokunun veritabanınızı seçin ve Yeni Arama Dizin seçin. (. Ex _design/nitelikler)
  2. endeksi için bir ad belirleyin tasarım belgesi için bir ad belirleyin
  3. girin indeks fonksiyonu için aşağıdaki (ex by_name_value.):

    function (doc) { 
        if (doc.attributeCollection && doc.attributeCollection.attributeArray) { 
         for (var i=0; i<doc.attributeCollection.attributeArray.length; i++) { 
         if (doc.attributeCollection.attributeArray[i].name) { 
          index("name", doc.attributeCollection.attributeArray[i].name, { store : true }); 
         } 
         if (doc.attributeCollection.attributeArray[i].value) { 
          for (var j=0; j<doc.attributeCollection.attributeArray[i].value.length; j++) { 
           index("value", doc.attributeCollection.attributeArray[i].value[j], { store : true }); 
          } 
         } 
         } 
        } 
    } 
    
aşağıdaki gibi

Bu endeks karşı sorguları verebilir:

https://<yourcloudanthost>/<databasename> 
/_design/attributes 
/_search/by_name_value 
?limit=10 
&q=name:%27Web+Type%27+OR+value:%27Improper%20Neutralization%20of%20Input%20During%20Web%20Page%20Generation%27 
&include_docs=true 

Not: Burada

&q= 
    name:'Web Type' 
    OR 
    value:'Improper Neutralization of Input During Web Page Generation' 

bir geçerli: niteliklerini 2. adımda ve by_name_value belirtilen tasarım belgesinin adı 3

sorgu deşifre adımda belirtilen dizinin adıdır Bu sorgu için örnek yanıt:

{ 
    "total_rows":1, 
    "bookmark":"g2wAAAABaANkAChkYmNvcmVAZGIyLmJtLWRhbC1zdGFuZGFyZDIuY2xvdWRhbnQubmV0bAAAAAJiQAAAAGJf____amgCRj9_92eAAAAAYQBq", 
    "rows":[ 
     { 
     "id":"08ff683d86484139", 
     "order":[ 
      0.0078043024986982346, 
      0 
     ], 
     "fields":{ 
      "name":"Web Type", 
      "value":"Improper Neutralization of Input During Web Page Generation" 
     }, 
     "doc":{ 
      "_id":"08ff683d86484139", 
      "_rev":"1-f4f6b73bbf3420412a5619e74f4cae00", 
      "lastUpdated":"2014-01-31 00:00:00", 
      "issueId":62655, 
      "isThirdParty":true, 
      "dateCreated":"2014-01-29 00:00:00", 
      "attributeCollection":{ 
       "attributeArray":[ 
        { 
        "updateable":false, 
        "lookup":"issuetype", 
        "issueAttributeDefinitionId":13, 
        "attributeType":1, 
        "name":"Web Type", 
        "value":[ 
         "Improper Neutralization of Input During Web Page Generation" 
        ] 
        } 
       ] 
      }, 
      "appReleaseId":57, 
      "hash":"953b33eca52938ab2d21e27eb171998b" 
     } 
     } 
    ] 
} 
buradan oluşturup sorgu arama indeksleri konusunda daha fazla bilgi edinebilirsiniz

:

https://docs.cloudant.com/search.html#