0

我注意到像这样的搜索*something会消耗大量的 CPU。我正在使用嗖嗖声 2.4.1。我想这是因为我没有涵盖此搜索案例的索引。something*工作正常。*something没有。

您如何处理这些查询?有没有一种特殊的方式来声明你的模式,这使得这种查询成为可能?

谢谢!

4

1 回答 1

2

这是一个非常基本的问题:前缀通常很容易找到(比如在搜索 foo* 时),而后缀则不是(比如 *foo)。

前缀 + 通配符搜索得到优化,首先进行快速前缀搜索,然后对第一步给出的结果进行慢速通配符搜索。

您无法使用 Wildcard + Postfix 进行优化。但是有个窍门:

如果你真的经常需要,你可以尝试索引一个反向字符串(也搜索反向搜索字符串),这样后缀搜索就变成了前缀搜索:

不知何故像:

add_document(title=title, title_rev=title[::-1])
...
# then query = u"*foo"[::-1], search in title_rev field.
于 2013-02-24T13:01:44.650 回答