2013-10-21 82 views
1

我有一個solr字段visibility,它有一組可能的值,我想用Spring Data Solr執行搜索。我想使用in(),並儘可能提高一些但不是全部的值。使用Spring Data Solr提升數個字段的數值

這是我需要搜索的一個例子,

visibility:(visible^1000 archived)

visibility:(visible^1000 draft^500 archived)

這將是可能的1.0.0.RELEASE版本或更高版本?目前我正在使用1.0.0.RELEASE。

謝謝,/ W

+0

或其他類似'otherfield:value AND(visibility:visible^1000或visibility:draft^500 OR visibility:archived)'會起作用。不知道如何在spring-data-solr中構建一個分組查詢。 – wsams

+0

現在我想起來了,這個問題的另一個標題可以用spring數據solr嵌套查詢。 – wsams

+0

我能夠通過使用'expression()'來做這件事:'new Criteria(「visibility」)。expression(「(visibility:(visible^1000)or visibility:(draft^500)or visibility: (可見性:1000)或可見性:(草案^ 500)或可見性:(存檔))「)」)「)看起來不正確,但工作 - 產生這種情況: – wsams

回答

2

我從來沒有設法鏈此查詢正確的,但在SimpleStringCriteria()是開明的petrikainulainen.net。

Criteria criteria = new SimpleStringCriteria("(visibility:(visible^1000) OR visibility:(draft^500) OR visibility:(archived))"); 
1

做如下圖所示,你會給遠高於提升到具有類別爲「網頁」的文檔。然後將'組合'標準添加到您現有的其他標準中

Criteria webpage= new Criteria("category").is("webpage").boost((float) 1000); 
Criteria document= new Criteria("category").is("document").boost((float) 2); 
Criteria combined= webpage.or(document);