Perl 这个与Lucene相关的代码实际上是做什么的?

Perl 这个与Lucene相关的代码实际上是做什么的?,perl,lucene,Perl,Lucene,尽管我可能会尝试,但我不明白这段代码的作用。我了解熟悉的Perl语法以及这方面的情况……但是什么是Lucene文档,Index::Writer-等等。?最重要的是,当我运行这段代码时,我希望生成一些东西……但我什么也看不到 我知道分析仪是什么…多亏了CPAN中链接的这个文档:。但是我不明白为什么我运行这段代码,而它似乎什么都没做…你从哪里得到这段代码的?它是POD文档开头概要中代码的副本 我猜这是有人试图开始学习Plucene。模块概要中的代码不一定是为了自己实现一些有用的东西 正如您参考的文档

尽管我可能会尝试,但我不明白这段代码的作用。我了解熟悉的Perl语法以及这方面的情况……但是什么是Lucene文档,Index::Writer-等等。?最重要的是,当我运行这段代码时,我希望生成一些东西……但我什么也看不到


我知道分析仪是什么…多亏了CPAN中链接的这个文档:。但是我不明白为什么我运行这段代码,而它似乎什么都没做…

你从哪里得到这段代码的?它是POD文档开头概要中代码的副本

我猜这是有人试图开始学习Plucene。模块概要中的代码不一定是为了自己实现一些有用的东西

正如您参考的文档所述,Lucene是一个Java库,它向应用程序添加了文本索引和搜索功能。它不是一个可以下载、安装和运行的完整应用程序


您是从哪里想到应该运行显示的代码的?

Lucene是一个搜索引擎,旨在快速搜索大量文本

我的perl并不强大,但从我对Lucene对象的理解来看:

 #usr/bin/perl
 use Plucene::Document;
 use Plucene::Document::Field;
 use Plucene::Index::Writer;
 use Plucene::Analysis::SimpleAnalyzer;
 use Plucene::Search::HitCollector;
 use Plucene::Search::IndexSearcher;
 use Plucene::QueryParser;

 my $content = "I am the law";
 my $doc = Plucene::Document->new;
 $doc->add(Plucene::Document::Field->Text(content => $content));
 $doc->add(Plucene::Document::Field->Text(author => "Philip Johnson"));


 my $analyzer = Plucene::Analysis::SimpleAnalyzer->new();
 my $writer = Plucene::Index::Writer->new("my_index", $analyzer, 1);
 $writer->add_document($doc);
 undef $writer; # close


 my $searcher = Plucene::Search::IndexSearcher->new("my_index");

 my @docs;
 my $hc = Plucene::Search::HitCollector->new(collect => sub {
         my ($self, $doc, $score) = @_;
         push @docs, $searcher->doc($doc);
 });

 $searcher->search_hc($query => $hc);
本部分将创建一个新的文档对象,并向其中添加两个文本字段:content和author,以准备将其作为可搜索数据添加到lucene索引文件中

my $content = "I am the law";
my $doc = Plucene::Document->new;
$doc->add(Plucene::Document::Field->Text(content => $content));
$doc->add(Plucene::Document::Field->Text(author => "Philip Johnson"));
这一部分创建索引文件,并添加以前创建的文档以执行该索引。此时,您应该在应用程序目录中有一个“my_index”文件夹,其中包含多个索引文件,其中文档数据作为可搜索文本

my $analyzer = Plucene::Analysis::SimpleAnalyzer->new();
my $writer = Plucene::Index::Writer->new("my_index", $analyzer, 1);
$writer->add_document($doc);
undef $writer; # close
本部分尝试在上面创建的索引文件中搜索刚才用于创建索引文件的相同文档数据。据推测,此时您的搜索结果将显示在@docs中,您可能希望将其显示给用户(尽管在本示例中并非如此)


这似乎是一个在perl中使用Lucene的“hello world”应用程序。在现实生活中的应用程序中,我看不到创建索引文件然后从同一段代码中搜索的情况。

啊-我明白了-是我复制的。这是我的尝试,现在我想起来了。。。关于大纲代码,您是对的,很少做任何事情,只显示基本用法。我从恐慌中产生了这个想法。那么,我想知道我应该跑什么。我访问了这个站点,查看了这个示例是否运行:但运行的结果相同,并且没有创建任何内容。我真的很喜欢一个工作的例子来告诉我Lucene是如何工作的。。。但我担心可能没有现成的例子(哦,我很不幸——我可能不得不挖掘)。哦,哇……我找到了我的_指数,并有效地让它做了一些事情。这比我刚才说的要远得多。感谢您的见解。您似乎并没有意识到,请先阅读本文,然后提出具体问题。上面的代码缺少
$query
变量的定义。
使用strict;使用警告
my $searcher = Plucene::Search::IndexSearcher->new("my_index");

my @docs;
my $hc = Plucene::Search::HitCollector->new(collect => sub {
       my ($self, $doc, $score) = @_;
       push @docs, $searcher->doc($doc);
});

$searcher->search_hc($query => $hc);