solr同一个条件查询,为啥第一次能查询出来,第二次却查询不出来,但第三次又能查询出来了这是为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr同一个条件查询,为啥第一次能查询出来,第二次却查询不出来,但第三次又能查询出来了这是为啥?相关的知识,希望对你有一定的参考价值。

查询代码:
SolrQuery query = new SolrQuery(content);
List<Files> list=new ArrayList();
//分页设置
// query.setStart((page.getPageIndex()-1)*page.getPageNumber());
// query.setRows(page.getPageNumber());
//排序
// query.setSort("issueDate", ORDER.desc);
//设置高亮
query.setHighlight(true);

// hl.fl参数表示哪个几Field关键字段高亮

query.setParam("hl.fl", "contentName,contentValue");

query.setHighlightSimplePre("<font color=red>");
query.setHighlightSimplePost("</font>");
query.setStart((page.getPageIndex())*page.getPageNumber());
query.setRows(page.getPageNumber());
// query.setHighlight(true)
// .setHighlightSimplePre("<font color='red'>")
// .setHighlightSimplePost("</font>")
// .setStart((page.getPageIndex())*page.getPageNumber())
// .setRows(page.getPageNumber())
// .setParam("hl.fl", "text");
//获取结果
QueryResponse response = SolrContext.getServer().query(query);
SolrDocumentList results = response.getResults();
//设置总数
page.setRecordCount((int)results.getNumFound());
//组装高亮结果
for (SolrDocument sd: results)
Files ct=new Files();
ct.setFile_id((String)sd.getFieldValue("id"));
if(sd.getFieldValue("contentName")!=null && !"".equals(sd.getFieldValue("contentName")))
ct.setFile_name((String)sd.getFieldValue("contentName"));

if(sd.getFieldValue("contentValue")!=null && !"".equals(sd.getFieldValue("contentValue")))
ct.setContent((String)sd.getFieldValue("contentValue"));

ct.setRelease_date((String)sd.getFieldValue("issueDate"));
if(response.getHighlighting().get(sd.getFieldValue("id"))!=null)
if(response.getHighlighting().get(sd.getFieldValue("id")).get("contentName")!=null
&& !"".equals(response.getHighlighting().get(sd.getFieldValue("id")).get("contentName"))
)
ct.setFile_name(response.getHighlighting().get(sd.getFieldValue("id")).get("contentName").get(0));

if(response.getHighlighting().get(sd.getFieldValue("id")).get("contentValue")!=null
&& !"".equals(response.getHighlighting().get(sd.getFieldValue("id")).get("contentValue"))
)
ct.setContent(response.getHighlighting().get(sd.getFieldValue("id")).get("contentValue").get(0));


list.add(ct);


return list;

参考技术A 是不是奇偶性的问题,或者是缓存的问题追问

感觉像是不能用submit提交,只能用onclick时间提交

追答

那就用onClick提交呗,,,,,添加个js事件。。

solr多条件查询

1.昨天记了一下三条件的“并且” “并且”(  &&   &&  )的情况,今天再来记一下 “并且”  “或者” 的情况。

 技术分享

这里的或者情况,一定要搞清楚无论有多少情况,只要“或者”出现,他的级别和第一个输入框的级别是一样的,如果我们把查询的条件语句分一下级别,

第一个输入框为solrSQL(主查询语句);

第二个输入框为solrFQ1(子查询语句1);

第三个输入框为solrFQ2(子查询语句2);

级别:solrSQL > solrFQ1 > solrFQ2

这样分一下级别很清楚了,方便我们拼接solr的查询语句,

好了,直奔下一步。上面讲到的只要出现或者我们可以理解为:solrSQL= solrFQL2>slorSQL1。

当然有些业务需求不同,可能是    solrSQL>solrFQ1=solrFQ2,这种需求为 在情况solrSQL的结果中,找出并且solrFQ1或者solrFQ2的情况,

具体的查询代码(以举例说明):

solrSQL:X_1457955996315_TM:"测试" + X_1457955996315_TM:"光盘"+ X_1457955996316_TM:"测试" + X_1457955996316_TM:"光盘"

solrFQ:X_1457955996315_TM:"竣工" + X_1457955996316_TM:"竣工" 

solrFQ2:

2.并且  不含 的情况

等级为:solrSQL = solrFQ1 != solrFQ2

 

具体的查询代码(以举例说明):

solrSQL:X_1457955996315_TM:"测试" + X_1457955996316_TM:"测试" 

solrFQ:X_1457955996315_TM:"竣工" + X_1457955996316_TM:"竣工" NOT  X_1457955996315_TM:"光盘" NOT  X_1457955996316_TM:"光盘"

solrFQ2:

不知道大家有没有发现以上情况除了 并且- 并且- 并且 的情况  其他情况基本上用不到 solrFQ2,基本上是在solrSQ和solrFQ1进行处理。

大家以此类推四级、五级.......N级的筛选情况。

以上是关于solr同一个条件查询,为啥第一次能查询出来,第二次却查询不出来,但第三次又能查询出来了这是为啥?的主要内容,如果未能解决你的问题,请参考以下文章

朋友,您好,我想问Django分页后查询条件丢失的问题

solr查询条件多响应时间

solr 查询的相关配置

mysql查询条件不等于,null也查不出来。

怎样一个表中的2个查询结果合并到一个表中的两列

Solr查询以。开头