2014-02-18 206 views
0

我有以下文件:嵌套小Solr中搜索

(1) { date:"2013-01-01", person:"John", activity:"swimming" } // <-- watch out date/year 
(2) { date:"2014-01-02", person:"John", activity:"cycling" } 
(3) { date:"2014-01-03", person:"John", activity:"jogging" } 
(4) { date:"2014-01-01", person:"Paul", activity:"swimming" } 
(5) { date:"2014-01-02", person:"Paul", activity:"cycling" } 
(6) { date:"2014-01-03", person:"Paul", activity:"jogging" } 
(7) { date:"2014-01-01", person:"Ringo", activity:"swimming" } 
(8) { date:"2014-01-02", person:"Ringo", activity:"cycling" } 
(9) { date:"2014-01-03", person:"Ringo", activity:"climbing" } // <-- watch out activity 

假設所有領域indexedstored

現在我想找到所有的人這並swimmingANDcyclingNOTjogging(所有2014)。正確的答案當然應該是Ringo。我認爲解決方案將是一個嵌套的方面搜索,但我不知道,我不知道如何。

+0

如果這是一個常見的查詢,你應該考慮索引非活動。就像一個領域「不活動:慢跑」。在索引方面儘可能多地完成工作,使查詢更快更清晰。 – Risadinha

回答

0

編輯:好吧,我現在明白了...'游泳和騎自行車',你的意思是Lucene AND。當然,這是無效的。

那麼,這個怎麼樣,你可以可以查詢activity:(swimming) AND date:[2014-01-01T00:00:00.000Z TO 2014-12-31T23:59:59.999Z],並使用以下磨製: facet=on&facet.query=activity:cycling&facet.query=activity:jogging,只是記住這是在騎自行車方面的價值而不是在跑步方面。

需要一點客戶端代碼,但應該工作?

+0

這不會讓我回到文件2,4,5,7,8和9嗎?這遠離想要的答案'Ringo' ... – heinob