Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在solr中为这种情况添加面?_Java_Solr_Solrj - Fatal编程技术网

Java 如何在solr中为这种情况添加面?

Java 如何在solr中为这种情况添加面?,java,solr,solrj,Java,Solr,Solrj,我有一款手机产品,它的一个搜索方面是网络,下面是最有可能出现的 蓝牙 无线网络 全球定位系统 4G 现在,对于每个产品,我都有一个产品属性表,即键值对的集合。比如说, Manufacture=Apple Price=900 制造和价格是关键所在。每个键都包含一个值。但是,对于网络,产品可以具有上面列出的所有功能或其中的一个子集。 现在,我的问题是,用户应该能够将手机作为方面进行过滤 一种解决方法是创建一个名为Networking的产品属性,其值如下 Networking=Wifi|Blueto

我有一款手机产品,它的一个搜索方面是网络,下面是最有可能出现的

蓝牙 无线网络 全球定位系统 4G 现在,对于每个产品,我都有一个产品属性表,即键值对的集合。比如说,

Manufacture=Apple
Price=900
制造和价格是关键所在。每个键都包含一个值。但是,对于网络,产品可以具有上面列出的所有功能或其中的一个子集。 现在,我的问题是,用户应该能够将手机作为方面进行过滤

一种解决方法是创建一个名为Networking的产品属性,其值如下

Networking=Wifi|Bluetooth|GPS
<dynamicField name="*_t" type="text_general"
indexed="true"
stored="false"
multiValued="true"/>
value.split("\\|");
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);
    }
}
我试着使用一个多值方面,在其中我这样声明它

Networking=Wifi|Bluetooth|GPS
<dynamicField name="*_t" type="text_general"
indexed="true"
stored="false"
multiValued="true"/>
value.split("\\|");
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);
    }
}
最后使用document.addField方法,我添加了如下字段

Networking=Wifi|Bluetooth|GPS
<dynamicField name="*_t" type="text_general"
indexed="true"
stored="false"
multiValued="true"/>
value.split("\\|");
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);
    }
}
但是,我仍然像这样显示在搜索中

Networking=Wifi|Bluetooth|GPS
<dynamicField name="*_t" type="text_general"
indexed="true"
stored="false"
multiValued="true"/>
value.split("\\|");
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


这怎么能解决呢?提前谢谢。希望您能尽快回复。

对于每个产品索引,都有一个名为“网络”的字段。然后,对于每个查询,使用addFacetFieldnetwork方法。这将返回字段中的值列表及其与查询匹配的产品集对应的计数。如果要获取所有可能的方面值,请查询*:*