1

试图让示例代码Search::VectorSpace开始工作,但没有得到预期的结果。我对此很陌生,所以如果这是微不足道的,请多多包涵。

我构建了两个txt文件,内容如下:

男孩.txt

aaron robbie james

女孩.txt

jane marie betty

我试图让代码正常工作:

#!/usr/bin/perl
use warnings;
use strict;
use Search::VectorSpace;

my @docs = ("/home/test_vector_search/girls.txt", "/home/test_vector_search/boys.txt");
my $engine = Search::VectorSpace->new( docs => \@docs);
$engine->build_index();

while ( my $query = <> ) {
    my %results = $engine->search( $query );
    print join "\n", keys %results;
}

用一个女孩的名字(简)和一个男孩的名字(亚伦)运行它给了我:

Making word list:
Finished with word list
*jane*
/home/test_vector_search/boys.txt
/home/test_vector_search/girls.txt
*aaron*
/home/test_vector_search/boys.txt
/home/test_vector_search/girls.txt

所以和我预期的不太一样!

来自模块的报价

对象构造函数。参数散列必须包含一个键“docs”,其值是对文档数组的引用。散列还可以包含一个可选的阈值设置,介于 0 和 1 之间,用作搜索结果的相关性截止值。

我猜问题出在参考数组(@docs)上?

任何帮助/见解将不胜感激。

4

1 回答 1

2

Search::VectorSpace 期望是and@docs的内容,尝试:boys.txtgirls.txt

my @docs = ("aaron robbie james", "jane marie betty");

例如

echo -e "rob" | perl test-search.pl 
Making word list:
Finished with word list
aaron robbie james

echo -e "jane" | perl test-search.pl 
Making word list:
Finished with word list
jane marie betty
于 2013-09-03T09:07:53.033 回答