从grep(Perl)中的数组中出现的单词对结果进行排序

时间:2015-08-18 18:08:46

标签: arrays regex perl relevance

Perl支持的任何简单解决方案,可以根据grep中的数组中出现的单词对结果进行排序?

例如,您有一个数据库可以从数组grep获取结果,并且您希望首先显示匹配最重复的单词的结果。

就像搜索引擎一样,通过相关性提供结果。

Perl中是否存在此表达式中的内容:

@array_relevance = grep(/given_term/i, @old_array);

@array_relevance = grep{$_ =~ /given_term/i}@old_array;

其中@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选择其内容,请求首先显示结果,其中包含最相同的词组降序。

希望它可以理解。

1 个答案:

答案 0 :(得分:0)

如果没有任何数据,很难确切地知道您需要什么,但请尝试以下方法:

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;