2013-08-01 49 views
0

我曾與solr合作過,但主要是搜索一直很簡單。我們現在有一種情況,我們希望搜索可以限制「AND」結果...使用示例如下:基於doc域中不同值的基於「AND」的Solr查詢

Doc 1 - > StudentID:123 ClassID:001

文檔2 - > StudentID:123的ClassID:002

文件3 - > StudentID:987的ClassID:001

所需查詢的 「英語」 的版本將「給我在班級的所有學生與classID:001和ClassID:002。這將只返回StudentID:123並省略學生:987。

當然,我們的實際查詢比這個b/c複雜得多,這個類也可以具有其他屬性,比如時間,日期等等。但是我想知道是否可以先完成基本的「AND」過濾。

這就是我們目前正在實現它的方式,它「似乎」能夠工作,但由於類的數量可以是動態的,這意味着我們需要動態更新小數計數。只是好奇,如果有一個「更好」的做法。

q=*:*&fq=(ClassID:001)OR(ClassID:002)&rows=0&group=true&group.field=ClassID&group.facet=true&group.ngroups=true&facet=true&facet.field=ClassID&facet.mincount=2&facet.field=StudentID 

我確信有一種直接的方式,我還沒有找到,所以我把這個問題交給專家。幫助表示讚賞!

回答

0

您可以在您的schema.xml中將default operator設置爲OR。這假設所有(或大部分)案例都想要進行OR查詢。

然後你可以改變你的查詢是這樣的:

classId:('001' '002') 

因爲你的類ID是動態的,你可以從你的客戶加盟classid的List注入此值。