2014-02-18 32 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