2014-10-29 16 views
1

全文索引搜索功能在雲中不起作用。全文索引在雲中不起作用

文獻1:

{ 
    "_id": "527c8d9327c6f27f17df0d2e17000530", 
    "_rev": "9-4a61c6dac8d03a7d55696c3dde6a4f50", 
    "employee_ID": "SCI130202", 
    "proj_role": "Team Member", 
    "work_total_experience": "4", 
} 

文獻2:

{ 

    "_id": "527c8d9327c6f27f17df0d2e17000531", 
    "_rev": "9-4a61c6dac8d03a7d55696c3dd46a4f50", 
    "employee_ID": "SCI130201", 
    "proj_role": "developer", 
    "work_total_experience": "2", 
} 

指數函數:

{ 
"_id": "_design/search_emp", 
"_rev": "3-4562324d684a2f13d2a1f6f570736e7e", 
"views": {}, 
"language": "javascript", 
"indexes": { 
    "by_employee": { 
     "analyzer": "standard", 
     "index": "function(doc){index(doc.proj_role,{'field':'project_role'})index(doc.work_total_experience,{'field':'work_experience'})}" 
    }}} 

如果我傳遞的網址,如:https://{username}.cloudant.com/databasename/_design/search_emp/_search/by_employee?q=project_role:developer & work_experience:2

這隻適用於一種情況,但我需要獲得具有2年經驗細節的確切輸出開發人員。

+0

能否請您上傳您在數據庫中有一個文件,你正在努力探索的一個例子嗎? – 2014-10-29 08:11:18

+0

上面提到的兩個樣本json文檔。但是我的預期輸出是具有2年經驗的開發人員。 – 2014-10-29 08:27:11

回答

0

這個工作對我來說...

這裏是我的設計文檔:

{ 
    "doc": { 
     "_id": "_design/search_emp", 
     "_rev": "17-e7f119c21ca21cc6ac44c5a967cd5550", 
     "indexes": { 
      "by_employee": { 
       "analyzer": "standard", 
       "index": "function(doc) {\n index('project_role', doc.proj_role, {});\n index('work_experience', doc.work_total_experience, {});\n}" 
      } 
     }, 
     "language": "javascript", 
     "views": {} 
    }, 
    "id": "_design/search_emp", 
    "key": "_design/search_emp", 
    "value": { 
     "rev": "17-e7f119c21ca21cc6ac44c5a967cd5550" 
    } 
} 

的網址:

https://username.cloudant.com/databasename/_design/search_emp/_search/by_employee?include_docs=true&q=work_experience:%222%22%20AND%20project_role:developer 

注意:我不得不圍繞雙引號經驗值。 work_experience:"2"爲我工作,但work_experience:2沒有工作。

響應:

{ 
    "bookmark": "g2wAAAABaANkABxkYmNvcmVAZGIyLm1lYWQuY2xvdWRhbnQubmV0bAAAAAJiQAAAAGJ_____amgCRj_bxezgAAAAYQBq", 
    "rows": [ 
     { 
      "doc": { 
       "_id": "90958a20a020a7483d3311a156fcf571", 
       "_rev": "1-795df1c239d3d029eaa6d8c45ef70a8c", 
       "employee_ID": "SCI130201", 
       "proj_role": "developer", 
       "work_total_experience": "2" 
      }, 
      "fields": {}, 
      "id": "90958a20a020a7483d3311a156fcf571", 
      "order": [ 
       0.4339554011821747, 
       0 
      ] 
     } 
    ], 
    "total_rows": 1 
} 
1

所以這裏有兩個問題,一個是你如何定義索引,另一個是你如何查詢它。

  1. 你打電話給index(doc.proj_role,{'field':'project_role'});但我不確定這是正確的語法;我相信你想要的:index("project_role", doc.proj_role);

  2. 兩個條件之間的&應該ANDq=project_role:developer AND work_experience:2

希望有所幫助。

+0

我試過上面的method.Am得到的結果,但我不能得到確切的結果。 AND條件不起作用 – 2014-10-29 09:54:54

+1

'AND'確實有效。只需嘗試一下互動示例:https://cloudant.com/for-developers/search/,我可以在其中搜索例如'類:鳥和飲食:食肉動物' – Daniel 2014-10-29 12:17:15