PHP Conference Japan 2024

SolrUtils::queryPhrase

(PECL solr >= 0.9.2)

SolrUtils::queryPhrase准备一个来自未转义的 lucene 字符串的短语

描述

public static SolrUtils::queryPhrase(string $str): string

准备一个来自未转义的 lucene 字符串的短语。

参数

str

lucene 短语。

返回值

返回包含在双引号中的短语。

添加注释

用户贡献的注释 2 条注释

quackfish at gmail dot com
9 年前
如果您索引敏感信息,则在允许用户使用原始查询时需要小心。如果您的表单没有 XSRF 保护,则可以使用跨域搜索计时攻击从索引中提取信息 [1]。

如果您允许原始查询,它还可以允许用户通过输入缓慢的查询来 DOS 您的应用程序。

[1] https://www.idontplaydarts.com/2015/09/cross-domain-timing-attacks-against-lucene/
daniel dot allen at commercialtrucktrader dot com
10 年前
进行一些测试,似乎此函数也对输入进行了清理(在 1.0 以上的版本上测试)。并且术语“短语”与完整的查询不同,例如“FIELD:冒号后的右半部分是短语”。

因此,如果您想搜索 SOME_FIELD:some value 并带有转义字符,例如 +,则必须编写代码

$query = 'SOME_FIELD:' . SolrUtils::queryPhrase('some value with an escape character like +');

这将正确地对其进行转义,例如

some value with an escape character like \+

仅供参考。
To Top