2013-10-21 51 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);