0

我刚刚在 Solr 中遇到LocalParams,我想知道使用 LocalParams 是否对默认的参数指定方式有任何性能影响。

举个例子来说明我的意思,请考虑以下 URL

默认

/select?q=dog&defType=dismax&qf=q_title_exact^20.0+q_title+q_suggest^0.5

局部参数

/select?q={!type=dismax qf='q_title q_title_exact^20 q_suggest^0.5'}dog

虽然大小上的差异微不足道,但我可以将参数类型限制为一种这一事实对我来说非常有益。

但是,由于它们被称为本地参数,我担心使用它们可能会对性能产生影响,例如没有正确缓存。

4

1 回答 1

2

与默认方式相比,如果您使用 localparams,我认为这对您的缓存功能并不重要。您提供的示例将彼此功能相同。但是,LocalParams 在以下情况下提供了优势(并且可能会影响存储在缓存中的记录,具体取决于您是进行标准搜索还是使用一些 dismax/edismax 搜索):-

假设您要搜索字段“A”匹配值“A1”且字段“B”匹配值“B1”的记录。此外,您希望基于 dismax 解析器匹配字段“A”,而应基于 solr 的标准解析器匹配字段“B”。

据我了解LocalParams,以下代码(未经测试): -

/select?q=A:A1&fq=B:B1&defType=dismax&qf=A^20.0+B^0.5

不会达到目的,因为它将对字段 A 和字段 B 执行 dismax 搜索。但是,以下代码(未经测试):-

/select?q={!type=dismax qf='A^20.0 B^0.5}A:A1&fq=B:B1

将跨字段 A 执行 dismax 搜索,而将对字段 B 执行标准搜索。

因此,您可以说 LocalParams 可以帮助您执行“不同类型的搜索”。根据使用的参数,它们还有许多其他优点。

于 2013-01-15T15:56:42.403 回答