根据grep(Perl)中数组中出现的单词对结果排序



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_relevancegrep选择被请求的内容,首先显示包含最多相同项的结果。

在没有任何数据的情况下很难确定您需要什么,但请尝试以下操作:

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;

相关内容

  • 没有找到相关文章

最新更新