一種創(chuàng)建索引文件的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種創(chuàng)建索引文件的方法及裝置。
【背景技術(shù)】
[0002]全文檢索是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當(dāng)用戶查詢時,檢索程序就根據(jù)事先建立的索引進(jìn)行查找,并將查找的結(jié)果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。
[0003]檢索主要分為按字檢索和按詞檢索兩種。按字檢索是指對于文章中的每一個字都建立索引,檢索時將詞分解為字的組合。對于各種不同的語言而言,字有不同的含義,比如英文中字與詞實際上是合一的,而中文中字與詞有很大分別。按詞檢索指對文章中的詞,即語義單位建立索引,檢索時按詞檢索,并且可以處理同義項等。英文等西方文字由于按照空白切分詞,因此實現(xiàn)中與按字處理類似,添加同義處理也很容易。中文等東方文字則需要切分字詞,以達(dá)到按詞索引的目的,關(guān)于這方面的問題,是當(dāng)前全文檢索技術(shù)尤其是中文全文檢索技術(shù)中的難點。
[0004]全文檢索系統(tǒng)是按照全文檢索理論建立起來的用于提供全文檢索服務(wù)的軟件系統(tǒng)。一般來說,全文檢索需要具備建立索引和提供查詢的基本功能,此外現(xiàn)代的全文檢索系統(tǒng)還需要具有方便的用戶接口、二次應(yīng)用開發(fā)接口等等。功能上,全文檢索系統(tǒng)核心具有建立索引、處理查詢返回結(jié)果集、增加索引、優(yōu)化索引結(jié)構(gòu)等功能。
[0005]Lucene是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎。Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。Lucene是一套用于全文檢索和搜尋的開源程式庫,由Apache軟件基金會支持和提供。Lucene提供了一個簡單卻強大的應(yīng)用程式接口,能夠做全文索引和搜尋。
[0006]Lucene特殊的索引結(jié)構(gòu),決定了其只能使用一個IndexWriter對索引進(jìn)行添加操作。這樣對于大數(shù)據(jù)量的索引,如果無法實現(xiàn)并行創(chuàng)建索引,索引的過程將十分耗時。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的是提供一種創(chuàng)建索引文件的方法及裝置,目的在于解決當(dāng)索引數(shù)據(jù)規(guī)模較大時,現(xiàn)有的索引方法索引效率較低的問題。
[0008]為解決上述技術(shù)問題,本發(fā)明提供一種創(chuàng)建索引文件的方法,包括:
[0009]根據(jù)數(shù)據(jù)規(guī)模以及業(yè)務(wù)需求,確定執(zhí)行索引創(chuàng)建的線程數(shù)量;
[0010]通過所述數(shù)據(jù)規(guī)模以及所述線程數(shù)量,確定各個線程分別負(fù)責(zé)進(jìn)行索引的數(shù)據(jù)范圍;
[0011]各個線程分別創(chuàng)建對應(yīng)數(shù)據(jù)范圍的索引文件;
[0012]將各個所述線程創(chuàng)建的所述索引文件進(jìn)行合并,存儲于一個索引目錄中。
[0013]可選地,所述將各個所述線程創(chuàng)建的所述索引文件進(jìn)行合并,存儲于一個索引目錄中包括:
[0014]當(dāng)各個線程的索引文件創(chuàng)建執(zhí)行完成后,將各個所述線程創(chuàng)建的所述索引文件進(jìn)行合并,存儲于一個索引目錄中。
[0015]可選地,所述各個線程分別創(chuàng)建對應(yīng)數(shù)據(jù)范圍的索引文件包括:
[0016]各個線程分別創(chuàng)建的索引文件互相獨立,不會引發(fā)鎖重疊異常。
[0017]本發(fā)明還提供了一種創(chuàng)建索引文件的裝置,包括:
[0018]第一確定模塊,用于根據(jù)數(shù)據(jù)規(guī)模以及業(yè)務(wù)需求,確定執(zhí)行索引創(chuàng)建的線程數(shù)量;
[0019]第二確定模塊,用于通過所述數(shù)據(jù)規(guī)模以及所述線程數(shù)量,確定各個線程分別負(fù)責(zé)進(jìn)行索引的數(shù)據(jù)范圍;
[0020]創(chuàng)建模塊,用于各個線程分別創(chuàng)建對應(yīng)數(shù)據(jù)范圍的索引文件;
[0021 ]存儲模塊,用于將各個所述線程創(chuàng)建的所述索引文件進(jìn)行合并,存儲于一個索引目錄中。
[0022]可選地,所述存儲模塊具體用于:
[0023]當(dāng)各個線程的索引文件創(chuàng)建執(zhí)行完成后,將各個所述線程創(chuàng)建的所述索引文件進(jìn)行合并,存儲于一個索引目錄中。
[0024]可選地,所述創(chuàng)建模塊具體用于:
[0025]各個線程分別創(chuàng)建的索引文件互相獨立,不會引發(fā)鎖重疊異常。
[0026]本發(fā)明所提供的創(chuàng)建索引文件的方法及裝置,根據(jù)數(shù)據(jù)規(guī)模以及業(yè)務(wù)需求,確定執(zhí)行索引創(chuàng)建的線程數(shù)量;然后通過數(shù)據(jù)規(guī)模以及線程數(shù)量,確定各個線程分別負(fù)責(zé)進(jìn)行索引的數(shù)據(jù)范圍;各個線程分別創(chuàng)建對應(yīng)數(shù)據(jù)范圍的索引文件;將各個線程創(chuàng)建的所述索引文件進(jìn)行合并,存儲于一個索引目錄中。本發(fā)明所提供的創(chuàng)建索引文件的方法及裝置,采用多線程并行創(chuàng)建索引的方式,提高了索引的效率。
【附圖說明】
[0027]圖1為本發(fā)明所提供的創(chuàng)建索引文件的方法的一種【具體實施方式】的流程圖;
[0028]圖2為本發(fā)明所提供的創(chuàng)建索引文件的方法的另一種【具體實施方式】的流程圖;
[0029]圖3為本發(fā)明實施例提供的創(chuàng)建索引文件的裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[°03°]在當(dāng)前的企業(yè)全文檢索應(yīng)用領(lǐng)域,基于Lucene的全文檢索引擎非常適合處理高并發(fā)、低延遲的的查詢需求。Lucene的索引是一個寫?yīng)氄?、讀共享的結(jié)構(gòu),這意味著,在使用多線程進(jìn)行添加索引時,性能并不會得到明顯的提升,所以任何時刻只能有一個線程對索引進(jìn)行寫入操作,如果同一時刻有多個不同IndexWriter對索引進(jìn)行寫入操作,那么將會引發(fā)鎖重疊異常,所以Lucene的特殊的索引結(jié)構(gòu),決定了其只能使用一個IndexWriter對索引進(jìn)行添加操作。這樣對于大數(shù)據(jù)量的索引,如果無法實現(xiàn)并行創(chuàng)建索引,索引的過程將十分耗時。鑒于此,本發(fā)明的核心是提供一種可并發(fā)創(chuàng)建索引文件的方法及裝置。
[0031]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進(jìn)一步的詳細(xì)說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0032]本發(fā)明所提供的創(chuàng)建索引文件的方法的一種【具體實施方式】的流程圖如圖1所示,該方法包括:
[0033]步驟S101:根據(jù)數(shù)據(jù)規(guī)模以及業(yè)務(wù)需求,確定執(zhí)行索引創(chuàng)建的線程數(shù)量;
[0034]步驟S102:通過所述數(shù)據(jù)規(guī)模以及所述線程數(shù)量,確定各個線程分別負(fù)責(zé)進(jìn)行索引的數(shù)據(jù)范圍;
[0035]步驟S103:各個線程分別創(chuàng)建對應(yīng)數(shù)據(jù)范圍的索引文件;
[0036]步驟S104:將各個所述線程創(chuàng)建的所述索引文件進(jìn)行合并,存儲于一個索引目錄中。