簡體   English   中英

如何編寫solr查詢以檢索數字字段值小於指定的所有記錄?

[英]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頁說明。

http://mirror.cc.columbia.edu/pub/software/apache/lucene/solr/ref-guide/apache-solr-ref-guide-6.5.pdf

基本上,使用花括號來表示小於。

?q=name:ipod AND price:{* TO 100}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM