如何在solr中为此案例添加构面?

时间:2014-07-11 10:33:31

标签: java solr solrj

我有一个移动产品,其中一个搜索方面是网络,其中最有可能出现以下内容。

  1. 蓝牙
  2. 无线上网
  3. GPS
  4. 4G
  5. 现在,对于每个产品,我都有一个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)

    怎么能修好?提前致谢。希望你能尽快回复。

1 个答案:

答案 0 :(得分:0)

对于每个产品索引,名为network的字段。然后,对于每个查询,请使用方法addFacetField("network")。这将返回字段中的值列表及其与您的查询匹配的产品集的计数。如果您想获取所有可能的构面值,请查询*:*