亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Lucene 4.x Spellcheck使用說明

2019-11-14 23:36:07
字體:
來源:轉載
供稿:網友
Lucene 4.x Spellcheck使用說明

  Spellcheck是Lucene新版本的功能,在介紹spellcheck之前,我們需要弄清楚Spellcheck支持幾種數據源。Spellcheck構造函數需要傳入Dictionary接口:

  

package org.apache.lucene.search.spell;/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either exPRess or implied. * See the License for the specific language governing permissions and * limitations under the License. */import java.io.IOException;import org.apache.lucene.search.suggest.InputIterator;/** * A simple interface representing a Dictionary. A Dictionary * here is a list of entries, where every entry consists of * term, weight and payload. *  */public interface Dictionary {  /**   * Returns an iterator over all the entries   * @return Iterator   */  InputIterator getEntryIterator() throws IOException;}

  常用的Dictionary主要有以下幾種,常用的主要有基于文本型的和基于lucene索引構建的:

  

  下面是我測試用的一段代碼,代碼包括索引構建和索引查詢:

  

package com.tianditu.com.search;import java.io.File;import java.io.IOException;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.search.spell.LuceneDictionary;import org.apache.lucene.search.spell.SpellChecker;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.store.MMapDirectory;import org.apache.lucene.util.Version;public class GlobalSuggest {//拼寫檢查構建的索引private  final String SPELL_CHECK_FOLDER = "c://spellcheck//";//根據已有的索引private final String GLOBAL_PINYIN_SUGGEST = "O://searchwork_custom//data_index//pinyin2008//";//構建索引public void testIndexPinyin2008() throws IOException{long start = System.currentTimeMillis();//北京吉威時代軟件股份有限公司//String indexDir ="O://searchwork_custom//data_index//GlobalIndex//";Directory direct = new MMapDirectory(new File(GLOBAL_PINYIN_SUGGEST));LuceneDictionary ld = new LuceneDictionary(DirectoryReader.open(direct), "name");ld.getEntryIterator();Directory spd = FSDirectory.open(new File(SPELL_CHECK_FOLDER));SpellChecker sc = new SpellChecker(spd);//sc.inIndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_30,null);//往spellcheck目錄下寫索引--------------sc.indexDictionary(ld, iwc, true);sc.close();long end = System.currentTimeMillis();System.out.println("索引完畢,耗時:"+(end-start)+"ms");}public void testIndex() throws IOException{long start = System.currentTimeMillis();//北京吉威時代軟件股份有限公司String indexDir ="O://searchwork_custom//data_index//GlobalIndex//";Directory direct = new MMapDirectory(new File(indexDir));LuceneDictionary ld = new LuceneDictionary(DirectoryReader.open(direct), "name");ld.getEntryIterator();Directory spd = FSDirectory.open(new File(SPELL_CHECK_FOLDER));SpellChecker sc = new SpellChecker(spd);//sc.inIndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_30,null);sc.indexDictionary(ld, iwc, true);sc.close();long end = System.currentTimeMillis();System.out.println("索引完畢,耗時:"+(end-start)+"ms");}public void testSearch(String wd) throws IOException{//構建DirectoryDirectory spd = FSDirectory.open(new File(SPELL_CHECK_FOLDER));//實例化 spellcheck組件SpellChecker sc = new SpellChecker(spd);//根據輸入關鍵字  獲得N條最相近的幾率 第三個鄙視精確度 越大越匹配 安裝實際需要調整String[] suggests = sc.suggestSimilar(wd, 10,0.6f);if(suggests!=null){for(String Word:suggests){System.out.println("Dou you mean:"+word);}}}/** * @param args * @throws IOException  */public static void main(String[] args) throws IOException {GlobalSuggest spellcheck = new GlobalSuggest();//spellcheck.testIndexPinyin2008();spellcheck.testSearch("beijing京鴨");//spellcheck.testSearch("beijng");}}

  其中索引構建處代碼:

  

//構建索引public void testIndexPinyin2008() throws IOException{long start = System.currentTimeMillis();//北京吉威時代軟件股份有限公司//String indexDir ="O://searchwork_custom//data_index//GlobalIndex//";Directory direct = new MMapDirectory(new File(GLOBAL_PINYIN_SUGGEST));LuceneDictionary ld = new LuceneDictionary(DirectoryReader.open(direct), "name");ld.getEntryIterator();Directory spd = FSDirectory.open(new File(SPELL_CHECK_FOLDER));SpellChecker sc = new SpellChecker(spd);//sc.inIndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_30,null);//往spellcheck目錄下寫索引--------------sc.indexDictionary(ld, iwc, true);sc.close();long end = System.currentTimeMillis();System.out.println("索引完畢,耗時:"+(end-start)+"ms");}

  此處代碼,就是根據已有的索引來構建Spellcheck所需的索引。

Spellcheck查詢索引代碼片段如下:

  

//構建DirectoryDirectory spd = FSDirectory.open(new File(SPELL_CHECK_FOLDER));//實例化 spellcheck組件SpellChecker sc = new SpellChecker(spd);//根據輸入關鍵字  獲得N條最相近的幾率 第三個鄙視精確度 越大越匹配 安裝實際需要調整String[] suggests = sc.suggestSimilar(wd, 10,0.6f);if(suggests!=null){for(String word:suggests){System.out.println("Dou you mean:"+word);}}

 相關算法:默認是LevensteinDistance 。

     

 查詢樣例:

    1、查詢漢字,有錯別字情況:

    

    2、查詢拼音:

    

    3、拼音漢字夾雜:

    

(備注:發現問題了,拼音和漢字夾雜的情況不行,如果想使用,需要進行某種處理。)

    4、如果處理一長串漢字,中間夾雜錯別字:

    

  總結:看來spellcheck能力還是有限,如果需要用還可能改造。

      

  

  

  

    


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂av在线免费观看| 美乳少妇欧美精品| 久久精品一偷一偷国产| 欧美在线视频a| 欧美激情欧美狂野欧美精品| 亚洲人成在线一二| 久久久久久久久久久免费精品| 久久久久久久久久久亚洲| 在线视频欧美性高潮| 成人有码视频在线播放| 国产综合色香蕉精品| 2021国产精品视频| 欧美激情网站在线观看| 亚洲一区二区日本| 国产精品日韩专区| 91久久久久久久久久| 日韩在线不卡视频| 九九热最新视频//这里只有精品| 中文字幕精品在线| 成人黄色中文字幕| 黄色一区二区在线| 午夜精品一区二区三区视频免费看| 91麻豆桃色免费看| 国产成人+综合亚洲+天堂| 亚洲香蕉成人av网站在线观看| 日本久久亚洲电影| 国外成人在线播放| 午夜精品蜜臀一区二区三区免费| 欧美夫妻性生活xx| 亚洲亚裔videos黑人hd| 亚洲天堂成人在线视频| 欧美亚洲成人xxx| 日本在线精品视频| 97久久伊人激情网| 91国产精品视频在线| 欧美一级视频免费在线观看| 久久久亚洲影院你懂的| 亚洲自拍欧美色图| 亚洲国产成人91精品| 亚洲国产成人久久| 久久国产精品久久久| 全色精品综合影院| 2019中文字幕在线| 亚洲精品v欧美精品v日韩精品| 亚洲一区二区久久久| 欧美国产日本高清在线| 日韩av在线免费观看| 日韩精品亚洲视频| 欧美亚洲另类视频| 欧美日韩爱爱视频| 午夜欧美不卡精品aaaaa| 成年无码av片在线| 久久艳片www.17c.com| 97视频在线观看播放| 国产精品成人国产乱一区| 亚洲欧美在线磁力| 国产欧美精品久久久| 久久人人97超碰精品888| 国产精品视频99| 欧美亚洲在线观看| 久久成人这里只有精品| 久久精品视频在线| 亚洲在线免费视频| 久久久免费高清电视剧观看| 日日摸夜夜添一区| 一区二区三区精品99久久| 亚洲黄在线观看| 国产精品青草久久久久福利99| 亚洲欧美精品一区二区| 动漫精品一区二区| 欧美日韩国产一中文字不卡| 精品无码久久久久久国产| 国产91成人在在线播放| 日韩视频中文字幕| 色婷婷成人综合| 日本精品一区二区三区在线| 国产精品久久久久久亚洲影视| 国产成人免费91av在线| 日韩精品极品视频| 亚洲美女在线观看| 日韩精品免费综合视频在线播放| 中文字幕日韩在线观看| 97视频人免费观看| 精品国偷自产在线视频| 久久最新资源网| 成人福利网站在线观看| 亚洲性视频网站| 性色av一区二区三区在线观看| 中文字幕久精品免费视频| 国产在线观看不卡| 中国人与牲禽动交精品| 久久久久久网站| 97超级碰在线看视频免费在线看| 日日狠狠久久偷偷四色综合免费| 亚洲影视中文字幕| 国产精选久久久久久| 日韩精品视频在线免费观看| 国产日韩一区在线| 日韩免费看的电影电视剧大全| 日韩一区二区三区国产| 性欧美办公室18xxxxhd| 在线播放精品一区二区三区| www欧美xxxx| 欧美成人免费大片| 一本一道久久a久久精品逆3p| 黄色成人在线免费| 91香蕉电影院| 国产不卡一区二区在线播放| 国产成人av在线| 国产精品视频xxxx| 久久久亚洲精选| 久久精品视频网站| 国产精品一香蕉国产线看观看| 亚洲国产另类 国产精品国产免费| 粉嫩av一区二区三区免费野| 国产亚洲美女精品久久久| 国产精品露脸自拍| 98精品国产高清在线xxxx天堂| 97视频在线观看免费高清完整版在线观看| 欧美精品久久久久| 日韩高清电影免费观看完整版| 亚洲iv一区二区三区| 欧美伦理91i| 中文字幕亚洲无线码a| 亚洲男人7777| 欧美激情在线狂野欧美精品| 国产99久久久欧美黑人| 国产视频在线观看一区二区| 98精品国产自产在线观看| 久久亚洲欧美日韩精品专区| 91精品国产99| 亚洲国产另类 国产精品国产免费| 日本成人激情视频| 欧美限制级电影在线观看| 亚洲国产高潮在线观看| 国产午夜一区二区| 中文字幕国产亚洲2019| 欧美另类极品videosbest最新版本| 亚洲欧美日韩中文在线| 国产亚洲欧洲在线| 国内偷自视频区视频综合| 亲爱的老师9免费观看全集电视剧| 色七七影院综合| 亚洲欧洲日产国产网站| 日韩av三级在线观看| 国产精品www| 国产成人精品亚洲精品| 亚洲成人免费网站| 美日韩精品免费观看视频| 国产97在线亚洲| 91精品久久久久久久久久| 亚洲人成77777在线观看网| 精品亚洲永久免费精品| 欧美午夜美女看片| 亚洲激情免费观看| 日韩精品视频免费| 日韩精品久久久久久久玫瑰园| 国产人妖伪娘一区91| 亚洲第一精品福利| 亚洲国产高潮在线观看| 久久久免费电影| 97精品伊人久久久大香线蕉| 亚洲电影免费观看高清完整版在线| 日韩av在线网页|