我需要知道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
}
答案 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