2017-04-25 93 views
0

暫時不真正熟悉NoSQL數據庫,我現在想知道以下幾點: 我有過完整的數據庫搜索一個Lucene搜索索引和:Cloudant巢搜索和查看

function (doc) { 
    index("default", doc.name); 
    index("name", doc.name, {"store": true, "index": false}); 
    if (doc.description) { 
    index("default", doc.description); 
    index("description", doc.description, {"store": true, "index": false}); 
    } 
    if (doc.steps) { 
    for (var i = 0; i < doc.steps.length; i++){ 
     index("default", doc.steps[i].description); 
    } 
    } 
} 

它應與用戶合作稍後提供查詢。現在我不知何故必須處理某些文件的限制。是否有可能做這樣的事情(sqlish):

SELECT id, name, description FROM Table WHERE id IN (<Lucene search>) AND <restriction>; 

創建在搜索結果的頂部視圖。 這是可能的,還是有更高效的選擇?

回答

1

這是不可能創造出「上的搜索結果頂視圖」,但可以肯定的是能夠回答你的SQL(ISH)查詢有兩種

  • Lucene索引(只要領域你需要的是索引)
  • MapReduce的觀點

沒有太多瞭解你的意思,我想解決這個作爲你現有的Lucene搜索的延伸。

您對Lucene索引指定的查詢可能非常複雜 - 您可以在其中具有邏輯和括號,就像SQL WHERE子句一樣,例如,

q=name:"Bob Smith" AND description:"database expert" AND (owner:"glynn" OR group_owner:"staff" OR world_owner:"everyone") 

在上面的例子中,我返回匹配查詢,但只有三個「限制」參數之一滿足文件 - 模仿了Unix的三層文件的所有權(你可以選擇其他訪問控制方案) 。

+0

索引不應該是問題。 感謝您提供處理lucene查詢中權限設置的建議。 是否可以重新定義結果的顯示方式? 存儲的所有內容都顯示在'「字段」下:{...}' 是否可以徹底重新定義? – Tamwyn

+0

這些字段是您索引的項目並添加'store:true'選項。您還可以將'?include_docs = true'添加到查詢字符串以返回整個匹配文檔 –