文档在Solr中的结果集中的位置

时间:2015-01-16 15:07:41

标签: java tomcat solr lucene

我需要知道Solr结果中文档的位置。让我解释一下原因。我们希望在搜索中向用户显示其项目的位置(以便用户可以购买促销并将其移动)。现在我查询所有页面,直到找到文档,但它会生成很多对Solr的调用。有没有办法获取元素的id和查询位置?最好通过id列表,以便我可以一次查询。

示例查询:

/search?sort=sort_time%20desc&fq=category_parent_id:2003&rows=15&q=&start=0

示例文件:

{
    sort_time: 1421747930,
    id: 146002852,
    catlevel2: "Volvo",
    catlevel1: "Auto's",
    description: "Volvo XC90",
    score: 6.4758344
}

3 个答案:

答案 0 :(得分:3)

您按" sort_time"排序看起来像是milis中的时间戳。

让我们执行以下操作:查询具有" sort_time"的所有结果。在1421747930和NOW之间进行范围查询。这将给你一个"计数"即使在第一个结果集中的结果数。如果您按" sort_time desc"进行订购你想要的位置是"计数"因为您的结果将是该范围查询中的最后一个。尝试添加" sort_time的相同查询:[1421747930 TO NOW]"例如(这可能不是确切的语法,请查看)。如果您总共获得137个结果,那么1421747930的位置将是137. Myeb您需要最大值" sort_time"而不是现在......我希望你明白这一点。

现在,您发出第二个查询,其中包含完整的ID,以获取其余数据。

但是你可以通过2个查询得到你想要的东西。我建议你玩范围的想法来获得你需要的东西。

答案 1 :(得分:0)

我使用以下方法一次性将id列表传递给solr搜索查询

首先在java端处理idlist,并使查询字符串类似于

String qry = "id:1 OR id:2 OR id:6"
SolrQuery solrQry         = new SolrQuery();
solrQry.set("q", qry);

SolrServer solrServer = new HttpSolrServer(SOLR_SERVER_URL);
QueryResponse response =  solrServer.query(solrQuery);          

答案 2 :(得分:0)

项目在搜索结果中的位置取决于其得分,该得分不是唯一的,因此您无法通过搜索结果中的位置精确检索项目。 但您可以按分数限制您的请求并对项目进行排序:CommonQueryParameters