我不知道这种搜索的名称,但我发现它变得非常普遍。
假设我有以下文件名的记录: 'order_spec.rb','order.sass','orders_controller_spec.rb'
如果我使用以下字符串'oc'搜索,我希望结果返回'orders_controller_spec.rb',因为它匹配了命令中的o和控制器中的c。 如果字符串是'os',那么我希望所有3匹配,' o rder_ s pec.rb',' o rder 。 s ass',' o rders_controller_ s pec.rb'。 如果字符串是'oco',那么我想要' o rders_ co </ strong> ntroller_spec.rb'
此类搜索的名称是什么?如何在Postgresql中完成此操作?
答案 0 :(得分:0)
这是一个名为subsequence的搜索。在Postgres中执行此操作的一种简单方法是使用LIKE
运算符(或这些文档中的其他几个选项)并使用通配符填充字母之间的空格,LIKE
为{{{ 1}}。要匹配%
列中的o
后跟s
的任何内容,就会显示如下:
words
这是一项相对昂贵的搜索,但您可以使用varchar_pattern_ops
或SELECT * FROM table WHERE words LIKE '%o%s%';
索引来提高性能,以支持更快的模式匹配。
text_pattern_ops