Solr 6.2.0 facet查询响应返回spitted结果

时间:2018-02-15 11:58:19

标签: solr dih

我使用DIH从oracle DB创建了新的核心和索引目录。索引成功。所以现在我试图使用facet查询查询,如下所示。

这是我的数据结构已编入索引。

{
        "sku_display_name":"Men's Brooks Adrenaline GTS-rojo -7.5",
        "id":"sku10017",
        "product_id":"prod10004",
        "product_display_name":"pre-Prod_MEN'S Brooks Adrenaline GTS ",
        "category_id":"cat10016",
        "category_display_name":"preCat_Casual Shoes",
        "_version_":1592465895497662464
},
      {
        "sku_display_name":"MUJERES ADIDAS BOOST ULTRA NUEVO - marron-10",
        "id":"sku10016",
        "product_id":"prod10003",
        "product_display_name":"pre-Prod_MUJERES ADIDAS BOOST ULTRA NUEVO",
        "category_id":"cat10019",
        "category_display_name":"preCat_Casual Tennis",
        "_version_":1592465895517585408
}

所以我的查询是。 localhost:8983/solr/TestCore/select?facet.field=category_display_name&facet.query=true&facet=on&indent=on&q=*:*&wt=json

我的问题是facets响应facet值。以下是我的回复。

"facet_counts": {
      "facet_queries": {
         "true": 0
      },
      "facet_fields": {
         "category_display_name": [
            "shoes", -- But my actual facet value is *preCat_Casual Shoes*
            22,
            "precat_casual", -- But my actual facet value is *preCat_Casual 
            Shoes*
            15,
            "tennis",        -- preCat_Casual Tennis
            9,
         ]
      },
      "facet_ranges": {},
      "facet_intervals": {},
      "facet_heatmaps": {}
   }
你可以帮我解决这个问题吗?根据这种行为,如果facet值有空格,它就会分裂。

2 个答案:

答案 0 :(得分:0)

这里的问题是对空格字符进行拆分,因此要修复您必须更改类型(似乎text配置WordDelimiterFilterFactory)配置以防止Solr拆分空间。要执行此操作,请转到\solr\schema.xml,然后通过删除此过滤<filter .... class="solr.WordDelimiterFilterFactory" ..>来修改您的类型。

第二个是结果的lowerCase转换,以修复我建议将以下过滤器移除到:<filter class="solr.LowerCaseFilterFactory" />

如果您使用text_ar,则需要将其更改为text_en而非stringstring几乎为代码或ID保留,因为它与同一个字匹配!

答案 1 :(得分:0)

当您使用已定义的标记化程序(不是KeywordTokenizer)索引到文本字段时,内容将根据某些规则集拆分为单独的标记。对于StandardTokenizer,这意味着内容在空白和一些其他特殊字符上分开。

由于您需要完整的值,因此可以将TextField与KeywordTokenizer一起使用(如果您希望使用小写过滤器以使案例无关紧要),或者如果您希望案例具有重要性,请使用string字段而不是TextField,其中定义了分析和标记化链。