2017-08-11 47 views
0

比方说,有汽车经销商网站,经销商显示他的汽车库存待售。每辆车都有基于汽车装饰的不同奖品,如LE,SE,XLE,XSE。例如。如何在Solr中正确查询范围

   LE    SE    XLE    XSE 

丰田凯美瑞:| 15000 - 20000 | | 25000 - 30000 | | 35000 - 40000 | | 41000 - 50000 |

丰田REV4:| 18000 - 21000 | | 24500 - 27000 | | 28000 - 33000 | | 34000 - 36000 |

这里的每一行都是solr中的一个Document。我保存这个奖项范围内像这样的Solr文档

对于丰田凯美瑞文件:

prizeMin:[15000, 25000, 35000, 41000], prizeMax:[20000, 30000, 40000, 50000] 

对于丰田REV文件:

prizeMin:[18000, 24500, 28000, 34000], prizeMax:[21000, 27000, 33000,36000] 

所以我奖方面与最小值和最大值,文本框,其中用户进入他的奖品范围。我想要做的是,如果用户输入15000 to 17000,那么我只想显示丰田凯美瑞(LE修剪在此范围之间)但不显示丰田REV4。如果用户输入26000 to 4000那么两辆车都会显示(因为凯美瑞是匹配SE,XLE和REV4匹配SE,XLE,XSE)。

这我可以有奖金的范围查询做SOLR像prize:[UserEnterMin TO *]prize:[* TO UserEnterMax].

然而,如果用户输入22000 to 23000话,我不希望显示任何东西,因为这个奖项范围不会下表中的任何奖项范围不同。 。用我的解决方案prize:[UserEnterMin TO *]prize:[* TO UserEnterMax]我无法防止显示这种情况。

所以我的问题是如何确定用户输入差距之间的奖金,以及如何使用solr范围查询来消除该文档的选择。

回答

0

这可以通过使用地理功能来模拟其他东西的众所周知的方式来完成:see here

这种联系是很老。自那时以来,地理资料已被扩充和重构,并且新的字段类型可用。您可以用这些类型以几种不同的方式对此进行建模。