奇怪的索尔弹簧行为

时间:2018-05-15 10:32:59

标签: solr lucene solrj spring-data-solr

当我使用Spring数据构建查询时,它会产生以下查询:

http://localhost:8983/solr/pride_projects/select?q=accession:*PXD*+OR+accession:*PRD*+AND+publication_date:[2012\-12\-31T00\:00\:00.000Z+TO+2012\-12\-31T00\:00\:00.000Z]

这没有给我任何结果。我手动将我的Solr中的查询更改为:

http://localhost:8983/solr/pride_projects/select?q=accession:*PXD*+OR+accession:*PRD*+publication_date:[2012\-12\-31T00\:00\:00.000Z+TO+2012\-12\-31T00\:00\:00.000Z]

这里输出:

{ accession: "PXD000002", project_title: "The human spermatozoa proteome", project_description: "The human spermatozoa proteome was in depth characterized using shotgun iterative GeLC-MS/MS method with peptide exclusion lists.", project_sample_protocol: "This LC-MS/MS analysis was repeated twice by digested band using an identified peptide exclusion list, generated by Proteome Discoverer, from the previous LC-MS/MS runs of the same sample.", submission_date: "2012-01-02T00:00:00Z",

删除最后一个AND,现在查询有效。我希望两个查询都有类似的行为,但不是。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

当您删除AND要求时,没有理由结果应该相同 - 您的设置的默认行为可能是所有子句都是可选的,除非您具体要求它(通过AND)。

由于您的publication_date时间间隔只匹配一毫秒,因此它与任何文档都不匹配 - 因此在您的上一次查询中它被忽略(如果文档匹配,则会影响分数)。

2012-12-31T00:00:00.000Z TO 2012-12-31T00:00:00.000Z

..您的时间间隔的开始时间与您的时间间隔结束相同,但由于您使用了[](这意味着值本身已包含在内),您将获得一个匹配对于索引正好毫秒的文档。

你可能想要过滤更广泛的范围。