我注意到像这样的搜索*something
会消耗大量的 CPU。我正在使用嗖嗖声 2.4.1。我想这是因为我没有涵盖此搜索案例的索引。something*
工作正常。*something
没有。
您如何处理这些查询?有没有一种特殊的方式来声明你的模式,这使得这种查询成为可能?
谢谢!
我注意到像这样的搜索*something
会消耗大量的 CPU。我正在使用嗖嗖声 2.4.1。我想这是因为我没有涵盖此搜索案例的索引。something*
工作正常。*something
没有。
您如何处理这些查询?有没有一种特殊的方式来声明你的模式,这使得这种查询成为可能?
谢谢!
这是一个非常基本的问题:前缀通常很容易找到(比如在搜索 foo* 时),而后缀则不是(比如 *foo)。
前缀 + 通配符搜索得到优化,首先进行快速前缀搜索,然后对第一步给出的结果进行慢速通配符搜索。
您无法使用 Wildcard + Postfix 进行优化。但是有个窍门:
如果你真的经常需要,你可以尝试索引一个反向字符串(也搜索反向搜索字符串),这样后缀搜索就变成了前缀搜索:
不知何故像:
add_document(title=title, title_rev=title[::-1])
...
# then query = u"*foo"[::-1], search in title_rev field.