<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    asdtiang的博客 感謝blogjava提供的博客交流平臺

    lucene2.4 學習筆記1

    Posted on 2010-01-12 18:10 asdtiang 閱讀(1445) 評論(0)  編輯  收藏 所屬分類: 搜索引擎學習
    網站要用搜索功能,本來想用SQL語句來實現,后來感覺沒什么意思,并開始考慮用LUCENE,去官網下載了2.9的版本,發現新東西比較多,于時下載了 2.4版本.相比以前的版本有些變化。
    首先建立Index:類文件如下:

    import jeasy.analysis.MMAnalyzer;

    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.index.CorruptIndexException;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.store.LockObtainFailedException;

    import com.lmsCard.www.bean.company.Company;
    import com.lmsCard.www.tools.Init;
    public class LuceneIndex {

    private String INDEX_STORE_PATH;
    private Analyzer analyzer;

    public LuceneIndex(){
    Init init
    =Init.getInit();
    init.readInfo();
    INDEX_STORE_PATH
    =init.LUCENE_INDEX;
    System.out.println(INDEX_STORE_PATH);
    analyzer 
    = new StandardAnalyzer();
    }
    /////company 為一個bean
    public void createCompanyIndex(Company company, boolean b) {
    try {
    IndexWriter writer 
    = new IndexWriter(INDEX_STORE_PATH + "/company",
    analyzer, b, IndexWriter.MaxFieldLength.UNLIMITED);
    System.out.println(INDEX_STORE_PATH
    +"/company");
    Document doc 
    = new Document();
    // //商家名稱
    doc.add(new Field("companyName", company.getCompanyName(),
    Field.Store.NO, Field.Index.ANALYZED));
    // /商家簡介
    if (company.getInfo() == null) {
    doc.add(
    new Field("info",
    company.getInfo() 
    + "www.lmscard.com", Field.Store.NO,
    Field.Index.ANALYZED));
    else {
    doc.add(
    new Field("info", company.getInfo(), Field.Store.NO,
    Field.Index.ANALYZED));
    }
    // /折扣
    doc.add(new Field("discount", company.getZhekou() + "",
    Field.Store.YES, Field.Index.NOT_ANALYZED));
    // //備注
    if(company.getBeizhu()==null||company.getBeizhu().equals("")){
    doc.add(
    new Field("comment", company.getBeizhu()
    + "www.lmscard.com", Field.Store.NO, Field.Index.ANALYZED));
    }
    doc.add(
    new Field("comment", company.getBeizhu()+"www.lmscard.com"
    , Field.Store.YES, Field.Index.ANALYZED));

    // ///商家編號
    doc.add(new Field("companyId", company.getCompanyId(),
    Field.Store.YES, Field.Index.NOT_ANALYZED));
    // /商家地址
    if(company.getCompanyAddress()==null)
    {
    doc.add(
    new Field("address", company.getCompanyAddress()+"www.lmscard.com",
    Field.Store.NO, Field.Index.ANALYZED));
    }
    else{
    doc.add(
    new Field("address", company.getCompanyAddress(),
    Field.Store.YES, Field.Index.ANALYZED));
    }

    System.out.println(company.getCompanyId());
    writer.addDocument(doc);
    writer.close();

    catch (CorruptIndexException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    catch (LockObtainFailedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }

    ////建立一個搜索類:
    import java.util.ArrayList;
    import java.util.List;

    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.queryParser.MultiFieldQueryParser;
    import org.apache.lucene.search.BooleanClause;
    import org.apache.lucene.search.IndexSearcher;
    import org.apache.lucene.search.Query;
    import org.apache.lucene.search.ScoreDoc;
    import org.apache.lucene.search.Searcher;
    import org.apache.lucene.search.Sort;

    import com.lmsCard.www.tools.Init;

    public class LuceneSearch {
    private Analyzer analyzer;
    private String type;
    private String INDEX_STORE_PATH;

    public LuceneSearch() {

    Init init 
    = Init.getInit();
    init.readInfo();
    INDEX_STORE_PATH 
    = init.LUCENE_INDEX;
    System.out.println(INDEX_STORE_PATH);
    analyzer 
    = new StandardAnalyzer();
    }

    public List searchCompany(String keyWord, String type1) {
    List l 
    = new ArrayList();
    if (type1 == null) {
    this.type = "companyName";
    }
    try {

    BooleanClause.Occur[] clauses 
    = { BooleanClause.Occur.SHOULD,
    BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD,
    BooleanClause.Occur.SHOULD };
    Searcher searcher 
    = new IndexSearcher(INDEX_STORE_PATH + "/company");
    System.out.println(INDEX_STORE_PATH 
    + "  ffff  " + type
    + " keyWord:" + keyWord);
    Query query 
    = MultiFieldQueryParser.parse(keyWord, new String[] {
    "companyName""info""comment""address" }, clauses,
    analyzer);
    // 此處在2.0基礎上有改動,此處必須傳入一個返回條數,這里用searcher.maxDoc()表示返回所有條數。
    Sort sort=new Sort("backMoney",true);
    ScoreDoc[] docs 
    = searcher.search(query, searcher.maxDoc()).scoreDocs;
    System.out.println(docs.length 
    + "docs.length");
    Document doc;
    for (int i = 0; i < docs.length; i++) {
    doc 
    = searcher.doc(docs[i].doc);
    l.add(doc.get(
    "companyId"));
    System.out.println(doc.get(
    "companyId"));

    }
    catch (Exception e) {
    e.printStackTrace();
    }
    return l;
    }

    }



    天蒼蒼,野茫茫,風吹草底見牛羊

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    posts - 80, comments - 24, trackbacks - 0, articles - 32

    Copyright © asdtiang

    asdtiang的博客 PaidMailz
    點擊廣告網賺A(每天4個廣告,每個0.0025美元,一個搜索廣告0.03美元)
    主站蜘蛛池模板: 午夜免费福利小电影| 久久精品无码精品免费专区| 国产在线观看片a免费观看| 亚洲资源在线观看| 久久青草免费91线频观看不卡| 亚洲午夜久久久久久久久久| 精品乱子伦一区二区三区高清免费播放| 亚洲成AV人网址| 精选影视免费在线 | 国产亚洲真人做受在线观看| 国产亚洲精品免费视频播放| 亚洲第一区香蕉_国产a| 59pao成国产成视频永久免费| 久久精品国产精品亚洲毛片| 国产精品怡红院永久免费| 国产日本亚洲一区二区三区| 暖暖免费高清日本中文| 天堂亚洲免费视频| 香蕉视频在线观看亚洲| 国产免费AV片在线播放唯爱网| 亚洲国产精品无码久久久秋霞1| 国产一区视频在线免费观看| 久久九九久精品国产免费直播| 亚洲日本中文字幕| 免费毛片在线视频| 久久久久久国产a免费观看不卡| 亚洲国产精品久久久久久| 无码一区二区三区免费视频| 免费在线人人电影网| 亚洲日本中文字幕区| 欧美三级在线电影免费| 成年网在线观看免费观看网址 | 亚洲综合精品第一页| 亚洲国产天堂久久综合| 99在线视频免费| 国产亚洲情侣久久精品| 亚洲成AV人片一区二区| 永久在线毛片免费观看| 国产午夜免费高清久久影院| 亚洲熟妇成人精品一区| 国产∨亚洲V天堂无码久久久|