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
选择其内容,请求首先显示结果,其中包含最相同的词组降序。
希望它可以理解。
答案 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;