使用Lucy进行索引和搜索

时间:2016-07-29 10:27:39

标签: perl apache-lucy

我正在尝试使用文本文件索引文件夹,并使用lucy :: simple模块搜索包含单词的文件。 到目前为止,这是我的代码:

#!/usr/bin/perl

use strict;
use warnings;
use Lucy::Simple;
use Lucy::Search::IndexSearcher;


#make_path($ch_Index);

    my $index = Lucy::Simple->new(
        path     => "/home/akpinar/Desktop/lucyindex/text",
        language => 'en',
    );

    while ( my ( $title, $content ) = each my %source_docs ) {
        my $index->add_doc({
            title    => $title,
            content  => $content,
        });
    }
    #print "Indexation finie\n"; 


###requete
    print "Veuillez taper votre requête : \n"; 
    my $requete = <STDIN>;
    chomp $requete ; 
    $requete=lc($requete); 


    my $nbTrouve = $index->search(
        query =>$requete, 
        offset=>0, 
        num_wanted=>100, 
    );

    print "Total hits: $nbTrouve\n";
    while ( my $hit = $index->next ) {
        print "$hit->{title}\n",
    }

但我得到错误:

Failed to read seg_1
    S_try_open_elements at core/Lucy/Index/PolyReader.c line 290
    at lucyrequete.pl line 21, <STDIN> line 1.
    eval {...} called at lucyrequete.pl line 21
    lucy_PolyReader_do_open at core/Lucy/Index/PolyReader.c line 439
    at lucyrequete.pl line 21, <STDIN> line 1.

有人知道我为什么会这样做吗?

1 个答案:

答案 0 :(得分:0)

您需要先创建路径目录:

mkdir /home/akpinar/Desktop/lucyindex/text

我也感到困惑,因为Lucy::SimpleLucy::Index::Indexer没有给出相同的api。 path=>的{​​{1}}与::Simple的{​​{1}}。 而且,这第二个可能会创建目录。

index=>