在动态字段中搜索

时间:2013-02-12 19:36:23

标签: solr solrnet

我有两个动态字段,例如“Product-Name- *”* “Product-Rating - *”。 一份文件可以包含5种产品和各自的评级,如下所示。

<str name="Product-Name-0">HTC Wildfire S</str>
<str name="Product-Name-1">Samsung Tab 2</str>
<str name="Product-Name-2">Samsung Note</str>
<str name="Product-Name-3">IPhone5</str>
<str name="Product-Name-4">Nokia Lumia 720</str>
<int name="Product-Rating-0">5</int>
<int name="Product-Rating-1">9</int>
<int name="Product-Rating-2">7</int>
<int name="Product-Rating-3">9</int>
<int name="Product-Rating-4">9</int>

在我目前的scnario中,我必须提升具有更高评级的产品(仅超过6.Note-Rating将介于1到10之间)。 如果我想搜索一个特定的产品名称,例如“IPhone5”,那么我就像这样查询

(Product-Name-0:IPhone5 AND (Product-Rating-0:7^3 OR Product-Rating-0:8^4 OR Product-Rating-0:9^5 OR Product-Rating-0:10^6)) OR 
(Product-Name-1:IPhone5 AND (Product-Rating-1:7^3 OR Product-Rating-1:8^4 OR Product-Rating-1:9^5 OR Product-Rating-1:10^6)) OR
(Product-Name-2:IPhone5 AND (Product-Rating-2:7^3 OR Product-Rating-2:8^4 OR Product-Rating-2:9^5 OR Product-Rating-2:10^6)) OR
(Product-Name-3:IPhone5 AND (Product-Rating-3:7^3 OR Product-Rating-3:8^4 OR Product-Rating-3:9^5 OR Product-Rating-3:10^6)) OR
(Product-Name-4:IPhone5 AND (Product-Rating-4:7^3 OR Product-Rating-4:8^4 OR Product-Rating-4:9^5 OR Product-Rating-4:10^6))

我本可以使用产品名称 - *:IPhone5查找所有文件,但问题是我不知道如何根据各自的产品评级推广该产品。

当我采用正确的方法时,有人可以指导我吗?

或者还有其他方法可以达到这个目的吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为您的架构设计本身存在问题,为什么单个文档中有多个名称和评级。理想情况下,每个名称应该是具有自己评级的单独文档,这样您可以使用评级值本身的某些功能来提升它。