我使用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值有空格,它就会分裂。
答案 0 :(得分:0)
这里的问题是对空格字符进行拆分,因此要修复您必须更改类型(似乎text
配置WordDelimiterFilterFactory
)配置以防止Solr拆分空间。要执行此操作,请转到\solr\schema.xml
,然后通过删除此过滤<filter .... class="solr.WordDelimiterFilterFactory" ..>
来修改您的类型。
第二个是结果的lowerCase转换,以修复我建议将以下过滤器移除到:<filter class="solr.LowerCaseFilterFactory" />
。
如果您使用text_ar
,则需要将其更改为text_en
而非string
,string
几乎为代码或ID保留,因为它与同一个字匹配!
答案 1 :(得分:0)
当您使用已定义的标记化程序(不是KeywordTokenizer)索引到文本字段时,内容将根据某些规则集拆分为单独的标记。对于StandardTokenizer,这意味着内容在空白和一些其他特殊字符上分开。
由于您需要完整的值,因此可以将TextField与KeywordTokenizer一起使用(如果您希望使用小写过滤器以使案例无关紧要),或者如果您希望案例具有重要性,请使用string
字段而不是TextField
,其中定义了分析和标记化链。