[英]How to write query using spring-data-solr which return list of all values of specific field
[英]How to write a solr query for retrieving all records with numeric field value less then specified?
假設我們有一組名字和價格的mp3播放器。
如何編寫正確的solr查詢以查找具有特定名稱且價格低於100 $的所有商品?
q = "(name:(ipod) AND price ???? 100.0)"
我不認為查詢解析器支持<
運算符。 您必須顯式定義RangeQuery 。 然后,您可以使用BooleanQuery將名稱查詢附加到該查詢。
更新:顯然,我錯了。 實際上,Solr的查詢解析器比Lucene的更聰明。 以下是您的答案: https : //lucene.apache.org/solr/guide/8_0/the-standard-query-parser.html#differences-between-lucene-s-classic-query-parser-and-solr-s -標准查詢分析器
field:[* TO 100]查找小於或等於100的所有字段值
另請注意,在性能方面,您應該使用過濾器查詢:
&q=name:ipod&fq=price:[* TO 100]
據我所知,我不相信Solr / Lucene支持更多/更少。 它可以通過編程方式完成整數和日期之類的事情(在您的情況下,金錢值,因為只需要擔心兩個小數位)。
例如,本機地,Lucene和Solr查詢解析器支持小於或等於(<=):
?q=name:ipod AND price:[* to 99.99]
如果數據不涉及分數,這將為您提供不到100美元的資金。
對於諸如日期和整數之類的事情,或其他具有顯着有限差異的事物,您可以遞減(或者在大於增量的情況下)您要去的值。
編輯:檢查Solr 6.5版的文檔。 它包含獨家范圍支持。 參考指南的第272頁說明。
基本上,使用花括號來表示小於。
?q=name:ipod AND price:{* TO 100}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.