我有一个移动产品,其中一个搜索方面是网络,其中最有可能出现以下内容。
现在,对于每个产品,我都有一个Product属性表,即一组键值对。例如,
Manufacture=Apple
Price=900
其中制作和价格是关键。每个键都包含一个值。但是,对于网络,产品可以具有上面列出的所有功能或其中的一部分。 现在,我的问题是用户应该能够将手机作为方面进行过滤。
一种解决方法是使用类似的值创建名为网络的产品属性。</ p>
Networking=Wifi|Bluetooth|GPS
我尝试过使用多值方面,我在其中声明了这个......
<dynamicField name="*_t" type="text_general"
indexed="true"
stored="false"
multiValued="true"/>
我编写的代码将网络属性中的值除以 | 喜欢这个..
value.split("\\|");
最后使用document.addField()
方法,我添加了像这样的字段..
if(stValue.contains("|"))
{
System.out.println("stValue contains |");
String[] vals=stValue.split("\\|");
System.out.println("The length of vals is "+vals.length);
for(String st:vals)
{
System.out.println("Adding field ("+solrPropertyName+" = "+st+")");
document.addField(solrPropertyName, st);
}
}
但是,我仍然像这样在搜索中显示..
网络
Wifi |蓝牙| GPS(2)
怎么能修好?提前致谢。希望你能尽快回复。
答案 0 :(得分:0)
对于每个产品索引,名为network
的字段。然后,对于每个查询,请使用方法addFacetField("network")
。这将返回字段中的值列表及其与您的查询匹配的产品集的计数。如果您想获取所有可能的构面值,请查询*:*
。