solr(四)索引文件之Extract Metadata

      

        假设客户要上传一个标准的mp3,服务器要对其做以下几件事:

        1) 上传到server并将相关 作者名,作品名,url 等存入数据库。

        2) 建立索引,当然用solr。

     这个看上去没有什么问题,但主要是,我们可能不知道mp3的作者是谁,它的作品名也与文件名不同,数量多的话不可能一个个去看,那么用solr的Extract Metadata功能就可以搞定,步骤如下。

        1: 在${catalina_home}\solr_config\solr\collection1\conf\schema.xml中定义几个字段(如果存在则不用定义)。

<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="author" type="text_general" indexed="true" stored="true"/>
<field name="url" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<dynamicField name="ignored_*" type="string" multiValued="true"/>

 启动程序,代码如下:

public static void indexFilesSolrCell(String fileName, String solrId) 
    throws IOException, SolrServerException {
    
    String urlString = "http://localhost:8080/solr"; 
    HttpSolrServer solr = new HttpSolrServer(urlString);
    ContentStreamUpdateRequest up 
      = new ContentStreamUpdateRequest("/update/extract");
    up.addFile(new File(fileName),"audio/mp3");
    up.setParam("literal.id", solrId);
    up.setParam("literal.url", "http://189.256.23.10:8080/UploadServer/upload/Woman.mp3");
    //up.setParam("literal.image", "http://189.256.23.10:8080/UploadServer/upload/Woman.jpg");
    up.setParam("literal.description", "这是mp3的简介");
    up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
    solr.request(up);
    QueryResponse rsp = solr.query(new SolrQuery("id:Woman.mp3"));
    System.out.println(rsp);
  }

 运行结果如下:

{
    responseHeader={
        status=0,
        QTime=0,
        params={
            q=id: Woman.mp3,
            wt=javabin,
            version=2
        }
    },
    response={
        numFound=1,
        start=0,
        docs=[
            SolrDocument{
                ignored_meta=[
                    xmpDM: releaseDate,
                    2013-04-08,
                    dc: creator,
                    张靓颖,
                    xmpDM: album,
                    OneWoman,
                    Author,
                    张靓颖,
                    xmpDM: artist,
                    张靓颖,
                    creator,
                    张靓颖,
                    xmpDM: audioCompressor,
                    MP3,
                    meta: author,
                    张靓颖,
                    stream_content_type,
                    audio/mp3,
                    stream_size,
                    null,
                    Content-Type,
                    audio/mpeg,
                    dc: title,
                    OneWoman
                ],
                url=http: //189.256.23.10: 8080/UploadServer/upload/Woman.mp3,
                description=这是mp3的简介,
                id=Woman.mp3,
                ignored_image=[
                    http: //189.256.23.10: 8080/UploadServer/upload/Woman.jpg
                ],
                ignored_xmpdm_releasedate=[
                    2013-04-08
                ],
                ignored_xmpdm_audiochanneltype=[
                    Stereo
                ],
                ignored_dc_creator=[
                    张靓颖
                ],
                ignored_xmpdm_album=[
                    OneWoman
                ],
                author=张靓颖,
                author_s=张靓颖,
                ignored_xmpdm_artist=[
                    张靓颖
                ],
                ignored_channels=[
                    2
                ],
                ignored_xmpdm_audiosamplerate=[
                    44100
                ],
                ignored_version=[
                    MPEG3LayerIIIVersion1
                ],
                ignored_creator=[
                    张靓颖
                ],
                ignored_xmpdm_audiocompressor=[
                    MP3
                ],
                title=[
                    OneWoman
                ],
                title_copy=OneWoman,
                ignored_samplerate=[
                    44100
                ],
                ignored_meta_author=[
                    张靓颖
                ],
                ignored_stream_content_type=[
                    audio/mp3
                ],
                ignored_stream_size=[
                    null
                ],
                content_type=[
                    audio/mpeg
                ],
                ignored_dc_title=[
                    OneWoman
                ],
                content=[
                    OneWomanOneWoman张靓颖OneWoman2013-04-08
                ],
                content_copy=OneWomanOneWoman张靓颖OneWoman2013-04-08,
                _version_=1431728246751232000
            }
        ]
    }
}

 可见只用了一个mp3的文件,就可以索引很多内容,那么,再将数据存入数据库就没什么问题了。你也可以直接在页面上query中查询,结果是一样的。

注意,这里由于我们的solr的所有config文件都是从example里面copy出来的,所以有些路径要修改,我这里暂时改成了绝对路径,请查看solrConfig.xml的<lib >标签,确保路径正确。

猜你喜欢

转载自extrimlycold20070206121610.iteye.com/blog/1843785
今日推荐