首页 > 解决方案 > 如何将一个文件上的两个 html 标签拆分为单独的 lucene 文档?

问题描述

我有这样的html数据:

<DOC>
<DOCID> D1-111 </DOCID>
<TITLE> this is title </TITLE>
<TEXT>
This is content
</TEXT>
</DOC>
<DOC>
<DOCID> D1-112 </DOCID>
<TITLE> this is title on D1-112 </TITLE>
<TEXT>
This is content on D1-112
</TEXT>
</DOC>

如何创建里面的每个内容<DOC></DOC>是一个 lucene 文档所以基于 html 数据我有 2 个 lucene 文档?

标签: perllucene

解决方案


试试这个:

my $str ='<DOC>
<DOCID> D1-111 </DOCID>
<TITLE> this is title </TITLE>
<TEXT>
This is content
</TEXT>
</DOC>
<DOC>
<DOCID> D1-112 </DOCID>
<TITLE> this is title on D1-112 </TITLE>
<TEXT>
This is content on D1-112
</TEXT>
</DOC>';

my $fcnt = 1; 
while($str=~m/<DOC[^>]*>((?:(?!<\/DOC>).)*)<\/DOC>/gs)
{
    my $docf = $&; my $filename = "Lucena\_$fcnt\.txt";
    writeFile($filename, $docf); $fcnt++;
}

sub writeFile
{
    my ($file, $cnt) = @_;

    open(FILE, ">", $file) || die "Couldn't write the file: $!\n";
    print FILE $cnt;
    close(FILE);

}

推荐阅读