Perl支持的任何简单的解决方案,可以根据grep中数组中出现的单词对结果进行排序?
例如,您有一个数据库,它从数组grep中获取结果,并且您希望首先显示匹配的重复次数最多的单词。
就像一个搜索引擎,根据相关性给出结果。
在Perl中是否存在这样的表达式:
@array_relevance = grep(/given_term/i, @old_array);
或
@array_relevance = grep{$_ =~ /given_term/i}@old_array;
where @array_relevance首先显示"given_term"出现次数最多的结果(比如5次),然后显示"given_term"出现次数最少的结果(4,3,2,1次)降序
我的意思是"@old_array"是包含多行的数据,它是一个文本文件中的数据库,其中有标题,描述,提交帖子的时间等。
@old_array
示例:
@old_array = "Title:Best marketing firm, Description:Check us out, we have many products which are innovative, Time of post:14:05:2015";
然后@array_relevance
和grep
选择被请求的内容,首先显示包含最多相同项的结果。
在没有任何数据的情况下很难确定您需要什么,但请尝试以下操作:
use warnings;
use strict;
my @old = qw(nine one one one two three three);
my @given_terms = qw(one two three);
my %seen;
%seen = map {$_ => ++$seen{$_}} @old;
print "$_n" for sort {$seen{$b} <=> $seen{$a}} @given_terms;