2016-07-29 3 views
0

Я пытаюсь индексировать папку с текстовыми файлами и искать файлы, содержащие слово, используя lucy :: simple module. Вот мой код до сих пор:Индексация и поиск с Lucy

#!/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. 

Кто-нибудь знает, почему я получаю это?

ответ

0

Вы должны создать каталог путь первый:

mkdir /home/akpinar/Desktop/lucyindex/text 

я был смущен, потому что слишком Lucy::Simple и Lucy::Index::Indexer не дают один и тот же API. path=> за ::Simple по сравнению с index=> за ::Indexex. И этот второй может создать каталог.

$indexer = Lucy::Index::Indexer->new(
schema => $schema, 
index => $outIndex, 
create => 1, 
truncate =>0, 
); 
Смежные вопросы