Hybris:使用相同的字段进行搜索和构面

时间:2016-08-24 09:25:03

标签: search solr facet faceted-search hybris

我必须使用字段" manufacturerName"在Hybris进行solr搜索和solr facet。虽然solr自由文本搜索要求字段类型为文本,但构面只能在字符串类型中正常工作。

有没有办法在搜索和方面使用同一个字段。我认为有一种方法可以使用" copyField"但我搜索了很多,但仍然不知道如何使用它?

任何帮助都将受到高度赞赏!

PS:在保留字段类型字符串时,自由文本搜索不能获取正确的结果。在保留字段类型文本时,facet显示截断的值。

2 个答案:

答案 0 :(得分:4)

使用copyField指令是可行的方法,但这需要您定义备用字段 - 意味着您有一个类型为text的字段和关联的标记化,以及一个类型为{{1的字段没有以任何方式处理。 Solr无法将这些结合在我所知道的单个领域中。

然后,您将使用字符串字段的名称来生成构面,而在您查询时使用其他字段。

string

当您在该字段上进行过滤或分割时,您必须引用名称<copyField source="text_search_field" dest="string_facet_field" /> 。在用户选择构面后,您将要对构面字段进行过滤,因为否则最终会出现可能泄漏到文档结果集中的其他构面的文档(例如,如果构面是&#34; Foo Bar& #34;,你突然得到的文件有&#34; Baz Foo Bar Spam&#34;作为方面,因为这两个词都存在于搜索字符串中。

答案 1 :(得分:1)

我无法实现“copyField”方法,但我发现了另一种简单的方法。在solr.impex中,我已经添加了类型为string的新字段manufacturerNameFacet,但是有一个参数“fieldValueProvider”和“valueProviderParameter”。我提供了这些值作为“springELValueProvider”和我想用于搜索的字段和facet“manufacturerName”。在完成索引之后,它就像一个魅力。无需其他设置。搜索和方面都按预期工作。