WriteLucene

package com.yulong.lucene.biz;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;

import com.yulong.lucene.core.LuceneContacts;
import com.yulong.lucene.util.RequestUtil;

public class WriteLucene
{
   
    /**
     * LOG.
     */
    private static final Logger LOG = Logger.getLogger(WriteLucene.class);
   
    // 当前写入的文件
    private String path = "";
   
    public WriteLucene(String path)
    {
   
        this.path = RequestUtil.ChangePath(path);
        this.path = this.path + "index/";
    }
   
    /**
     * 写入索引数据
     *
     * @param map
     */
    public boolean write(List<Map<String, String>> list)
    {
   
        IndexWriter iwriter = null;
        try
        {
            iwriter = LuceneContacts.iwpool.get(this.path, this.toString());
            for (Map<String, String> map : list)
            {
                Document doc = new Document();
                for (Iterator<String> it = map.keySet().iterator(); it.hasNext();)
                {
                    String key = RequestUtil.VailStr(it.next(), "");
                    String value = RequestUtil.VailStr(map.get(key), "");
                    if (key != "")
                    {
                        if (key.equalsIgnoreCase("guid"))
                            doc.add(new Field(key, value, Field.Store.YES, Field.Index.NOT_ANALYZED));
                        else if (key.equalsIgnoreCase("content"))
                            doc.add(new Field(key, value, Field.Store.YES, Field.Index.ANALYZED));
                        else
                            doc.add(new Field(key, value, Field.Store.YES, Field.Index.ANALYZED));
                    }
                }
                if (map.size() > 0)
                {
                    iwriter.addDocument(doc);
                }
            }
            iwriter.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
        LuceneContacts.iwpool.over(this.path, this.toString());
        return true;
    }
   
    /**
     * 写入索引数据
     *
     * @param map
     */
    public boolean write(Map<String, String> map)
    {
   
        IndexWriter iwriter = null;
        try
        {
            iwriter = LuceneContacts.iwpool.get(this.path, this.toString());
            Document doc = new Document();
            for (Iterator<String> it = map.keySet().iterator(); it.hasNext();)
            {
                String key = RequestUtil.VailStr(it.next(), "");
                String value = RequestUtil.VailStr(map.get(key), "");
                if (key != "")
                {
                    if (key.equalsIgnoreCase("guid"))
                        doc.add(new Field(key, value, Field.Store.YES, Field.Index.NOT_ANALYZED));
                    else if (key.equalsIgnoreCase("content"))
                        doc.add(new Field(key, value, Field.Store.YES, Field.Index.ANALYZED));
                    else
                        doc.add(new Field(key, value, Field.Store.YES, Field.Index.NOT_ANALYZED));
                }
            }
            if (map.size() > 0)
            {
                iwriter.addDocument(doc);
                iwriter.close();
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
        }
        LuceneContacts.iwpool.over(this.path, this.toString());
        return true;
    }
}

你可能感兴趣的:(Lucene)