2016-02-23 4 views
0

В Lucene я попытался найти товары, находящиеся в ценовом диапазоне. Поля цены товара имеет знак доллара добавляемые к ней, как «$ 3,99»Поиск цен в Lucene

Я попытался

String querystr = "product: xxxx AND price: $[20.00 - 40.00]" 

, но это дает мне ParseException. Итак, каков правильный способ сделать это?

ответ

2

Вы должны указать свою цену как числовое поле FloatField, например.

Если вы указали это поле в виде строки или в виде текста, ваш запрос диапазона обязательно будет основан на лексикографическом порядке. Поэтому, если вы выполняете запрос диапазона, например, вы пытаетесь здесь, скажите запрос диапазона price:[$20.00 TO $40.00] (sidenote: see the docs, для правильного синтаксиса запроса диапазона), тогда вы получите документы с ценой = $35.00 по желанию, но вы также получите документы с ценой = $350.00 и цена = $3500.00.

После того, как вы переиндексировали с помощью числового поля, вы можете запросить с помощью NumericRangeQuery (QueryParser не поддерживает числовые запросы, хотя некоторые люди расширили его для этого).