2014-01-28 276 views
0

標題可能會造成混亂 - 讓我解釋一下:最佳數據庫/解決方案

我必須將數據存儲在類似這樣的格式(本例中是mongoDB格式):

{ 
    name: 'entity1', 
    field: 'value', 
    tags: ['tag1','tag2','tag3'], 
} 

現在我需要的功能是這樣的:標籤

function(text){ 
    // find all entities where text contains at least one of entity tags 
} 
  1. 通常數量應該ñ不大於5.
  2. 實體數量不應大於100,但它可能在未來增長。
  3. 我需要這個「實時」 - 儘可能快。
  4. 搜索必須是大小寫不敏感的。
  5. 數據必須存儲在某種數據庫中 - 當數據庫更新時,函數將搜索更新的實體。
  6. 我的應用程序是用node.js編寫的。
  7. 這將是很酷,如果函數返回的信息是什麼位置的字符串每個標籤被發現(如果它被發現的話)。

我試圖做到這一點有關MongoDB和發現解決方案中使用$where查詢,但它確實在陣列屬性MOT工作,無論如何,它是相當緩慢。

我正在尋找解決方案/ DB我可以使用...

+0

我的建議是,你看看一個真正的全文搜索系統,如Solr。有一個node.js適配器工作得很好! – heinob

回答

1

你越來越downvotes你的問題不涉及任何代碼相關的問題,但基於知識的缺乏一個通用的教育問題。 SO不鼓勵這樣的問題。當你基本上要求別人做你的功課。

答:

的MongoDB允許在陣列創建的字符串指數:

db.item.ensureIndex({ tags: 1 }); 

而且發現只是:

db.item.find({ tags: 'tag2' }); 

MongoDB是足夠聰明,明白它是數組,你正在尋找數組中的值。