2015-10-15 39 views
0

我使用solrj api从solr中获取结果。根据最符合的条件来排列结果Criteria-solr

我的查询是这样的:

solrQuery.addFilterQuery("connection:(${user.uniqueKey()}) OR followers: 
    (${user.uniqueKey()}) OR company:(${currentCompanies})") 

我想要的结果,其中第一个遇到的最大标准(从连接,追随者,公司)

也就是说,如果它落入连接和追随者和公司的任何结果那么结果应该先落在连接的结果之前,追随者才会先结果。

+0

请记住,FilterQueries不会影响分数。然而,实际查询中的术语会这样做,因此匹配更多术语的查询排名要高于匹配更少的查询。 – MatsLindh

回答

0

你实际上可能是关闭不使用过滤器的查询更好,所以你可以做这样的事情:

(yourField1:value1 OR yourField2:value2 OR yourField3:value3) OR (yourField1:value1 AND yourField2:value2 AND yourField3:value3)^100.0

你需要用它打了一下,以获得正确的价值观。

您在这里做的是告诉Solr在AND搜索中对较高的文档进行评分,但仍然返回符合OR搜索的结果。

+0

其实我总共有6场。所以会有多少组合? – rahul

+0

@rahul你的组合取决于你想要完成的事情。您应该可以将其余的字段添加到OR子查询和AND子查询中,而不会出现问题,前提是您要对所有这些字段进行OR搜索和AND搜索。 – TMBT