Hybris SOLR 文本、模糊、通配符和短语 自由文本查询

问题描述

我正在尝试自定义 Hybris 搜索,禁用某些属性,例如“manufactureName”,并使其他属性能够在搜索自动完成和拼写检查中工作,但是,例如:我发现 SolrsearchQueryProperty 有多个“属性”“制造商名称":

enter image description here

enter image description here

enter image description here

enter image description here

所有这些属性(自由文本、模糊文本、通配符和短语)的含义是什么?

解决方法

基于此配置,将构建 solr 查询以在 solr 上进行搜索。如果这些类型中的至少一种设置为 true,则该类型的查询将添加到查询中。如果 multiple 设置为 true,则所有都将附加到搜索查询中。

一般参数

提升

使用 boost 参数,您可以配置此类型的匹配将考虑更好的匹配。例如,如果某些内容完全匹配,您通常希望它在接近匹配时显示得更高,因此您可以在此处添加更大的提升。

最小长度

您还有 min length 参数。这定义了在激活此类搜索之前应输入的最少字符数。您可以定义在模糊搜索激活之前,您需要输入至少 5 个字符。这是为了防止某些搜索类型返回大量字符较少的结果

类型是什么意思

假设对于示例,我们有一个 solr 索引,其中制造名称字段有 3 个条目:testtestingreal test。所有示例均针对制造商名称字段。

自由文本查询

这是一个完全匹配搜索。只有在 solr 索引中找到确切的关键字时,您才会得到结果。请注意,这并不意味着它必须匹配整个值。在 real test 的情况下,solr 考虑 realtest 单独的关键字。如果您要搜索多个关键字,例如在“real test”上,solr 将搜索关键字“real”和关键字“test”

Solr 查询

(manufactureName_text : test)

结果

test
real test

自由文本通配符查询

顾名思义,这是一个通配符搜索。这意味着您可以输入搜索词的一部分。使用通配符类型,您可以确定将在搜索中放置通配符的位置。你想要一个完整的通配符,还是只在最后。

带有 postFix 查询类型的 Solr 查询

(manufactureName_text : test*)

结果

test
testing
real test

自由文本模糊查询

当您允许搜索中出现错误时,将使用模糊查询。这意味着您还将匹配包含一些错误字符的搜索关键字。 fuzzyness 因素决定了结果显示的错误程度。请注意,模糊搜索没有通配符。它的行为更像是精确匹配

Solr 查询有 1 个字符错误

(manufactureName_text : tast∼)

结果

test
real test

自由文本短语查询

最后我们有一个文本短语搜索。通过短语搜索,我们还考虑了空格,而不仅仅是关键字。使用短语搜索,您可以输入 slop factor。 Sloppiness 定义了可以移动字符以仍然找到匹配项的最大位置数。这是为了在搜索与结果略有不同时仍能找到结果。斜率因子为 2 时,test real 将与 real test 匹配,因为使用 1 个位置开关,我们可以找到结果。

Solr 查询

(manufactureName_text:"real test")

结果

real test

结合

如果您激活多个搜索样式,所有这些 solr 查询部分都会附加一个 OR。使用 boost 规则和 solr 中的计算,最匹配的项目将显示在结果列表的顶部。基本上你决定你允许什么类型的搜索,以及它们应该如何影响返回的结果

自由文本查询和自由文本短语查询处于活动状态的示例查询

(manufactureName_text : real) OR (manufactureName_text : test) OR (manufactureName_text:"real test")

结果

real test
test

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...