2014-11-25 55 views
0

在這裏我引用了我的代碼進行多重搜索過濾。我無法找到那個錯誤。請給出一個正確的代碼,使其工作良好。多個搜索過濾器在cloudant中不起作用,爲什麼?

僱員文件:

{ 「_id」: 「527c8d9327c6f27f17df0d2e17000530」,

「_rev」: 「24-276a8dc913559901897fd601d2f9654f」,

「proj_role」: 「團隊成員」,

「work_total_experience」:「3」,

「personal」:{ 「languages_known」:[ 「英語」, 「泰盧固語」 ]},

「技巧」:[

{ 

    "skill_set": "Webservices Framework", 
    "skill_exp": 1, 
    "skill_certified": "yes", 
    "skill_rating": 3, 
}, 
{ 
"skill_set": "Microsoft", 
    "skill_exp": 1, 
    "skill_certified": "yes", 
    "skill_rating": 3, 
} 

]
「framework_competency」: 「Nasscom的」, 「類型」: 「員工的文檔」 }

設計文件:

{ 「_id」: 「_design /樣品」

「_rev」: 「86-1250f792e6e84f6f33447a00cf64d61d」,

「意見」:{},

「語言」: 「JavaScript的」,

「指標」:{

"search": { 

    "index": "function(doc){\n index(\"default\", doc._id);if(doc.type=='employee-docs'){\nif (doc.proj_role){index(\"project_role\", doc.proj_role);}if(doc.work_total_experience){\nindex(\"work_experience\", doc.work_total_experience);}\nif(doc.personal.languages_known){for(c in doc.personal.languages_known){ \n index(\"languages_known\",doc.personal.languages_known[c]);}} if(doc.skills){for (var i=0;i<doc.skills.length;i++){\nindex('skill_set',doc.skills[i].skill_set);}}}}" 

} 

}} 通過以下網址

運行:https://ideyeah4.cloudant.com/opteamize_new/_design/sample/_search/search?q=project_role:TeamMember%20AND%20work_experience:%223%22%20AND%20languages_known:Telugu%20AND%20skill_set:Microsoft&include_docs=true

回答

1

一個簡單的方法來調試這是查詢前100結果索引:

https://ideyeah4.cloudant.com/opteamize_new/_design/sample/_search/search?q=*:*&limit=100 

這至少會告訴你是否有索引的任何文件都沒有。

您當前的查詢(不URL編碼)的樣子:

project_role:TeamMember AND work_experience:"3" AND languages_known:Telugu AND skill_set:Microsoft 

我建議某些搜索值的要求報價 - 總是如此,當您正在搜索的字符串值。接下來,你可以嘗試:

project_role:"TeamMember" 

看看你是否得到任何結果,並從那裏提煉。

如果您存儲這些值並將它們編入索引(因此您可以準確查看索引的內容),調試此操作也可能更容易。爲此,請向每個索引調用{「store」:true}添加一個對象。例如,

index("languages_known", doc.personal.languages_known[c], { "store": true }); 

現在,當您查詢索引時,它將返回與每個匹配一起存儲的字段列表。