45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:如何增加nutch索引长度?

如何增加nutch索引长度?

2016-09-05 19:47:46 来源:www.45fan.com 【

如何增加nutch索引长度?

高亮显示比较简单,网上也有很多介绍代码。修改如下:

将 org.apache.nutch.searcher.Summary 第 54行 代码 修改为:

public String toString() { return "<span style='color:red'>" + super.toString() + "</span>"; }

增加索引长度花了我比较长的时间 , 不过后来发现原来有两个参数是专门调整索引长度的 ,刚看代码的时候没有注意到 ,在org.apache.nutch.searcher.Summarizer 的36行左右 有

/** The number of context terms to display preceding and following matches.*/
private static final int SUM_CONTEXT =
NutchConf.get().getInt("searcher.summary.context", 5);

/** The total number of terms to display in a summary.*/
private static final int SUM_LENGTH =
NutchConf.get().getInt("searcher.summary.length", 100);

这 两个 是 Term 的长度 , 第一个参数是 SUM_CONTEXT 在摘要中间最多有 5个 高亮显示的关键词(注:这里的NutchConf.get().getInt()第二个参数 5表示 默认值是5,也就是在取得searcher.summary.context为NULL时候给一个默认值),

第二个SUM_LENGTH 是在摘要中最多显示 100个 Term ,这个Term 是分词得到的结果 ,在后面的摘要截取算法中需要用到 Term ,不过可以通过Luncene 的保存Term的坐标 来实现 索引关键词的快速高亮显示 ,这样的好处是可以在查询的时候不再使用分词,以减少查询相应时间。

不过如果分词系统是基于词库的,则词库增长以后会有一定问题,这个以后在做专题讨论。

下面帖一下改过的算法内容,显示文字数大约在 150个左右 ,如果需要增加到更多 ,则可以修改 相应的代码。

如何增加nutch索引长度?如何增加nutch索引长度?/**Returnsasummaryforthegivenpre-tokenizedtext.*/
如何增加nutch索引长度?如何增加nutch索引长度?publicSummarygetSummary(Stringtext,Queryquery)throwsIOException{
如何增加nutch索引长度?
如何增加nutch索引长度?
//Simplisticimplementation.Findsthefirstfragmentsinthedocument
如何增加nutch索引长度?
//containinganyqueryterms.
如何增加nutch索引长度?
//
如何增加nutch索引长度?//TODO:checkthatphrasesinthequeryarematchedinthefragment
如何增加nutch索引长度?
如何增加nutch索引长度?Token[]tokens=getTokens(text);//parsetexttotokenarray
如何增加nutch索引长度?
如何增加nutch索引长度?if(tokens.length==0)
如何增加nutch索引长度?
returnnewSummary();
如何增加nutch索引长度?
如何增加nutch索引长度?String[]terms
=query.getTerms();
如何增加nutch索引长度?HashSethighlight
=newHashSet();//putquerytermsintable
如何增加nutch索引长度?for(inti=0;i<terms.length;i++)
如何增加nutch索引长度?highlight.add(terms[i]);
如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//CreateaSortedSetthatranksexcerptsaccordingto
如何增加nutch索引长度?
//howmanyquerytermsarepresent.Anexcerptis
如何增加nutch索引长度?
//aVectorfullofFragmentsandHighlights
如何增加nutch索引长度?
//
如何增加nutch索引长度?如何增加nutch索引长度?
SortedSetexcerptSet=newTreeSet(newComparator(){
如何增加nutch索引长度?如何增加nutch索引长度?
publicintcompare(Objecto1,Objecto2){
如何增加nutch索引长度?Excerptexcerpt1
=(Excerpt)o1;
如何增加nutch索引长度?Excerptexcerpt2
=(Excerpt)o2;
如何增加nutch索引长度?
如何增加nutch索引长度?如何增加nutch索引长度?
if(excerpt1==null&&excerpt2!=null){
如何增加nutch索引长度?
return-1;
如何增加nutch索引长度?如何增加nutch索引长度?}
elseif(excerpt1!=null&&excerpt2==null){
如何增加nutch索引长度?
return1;
如何增加nutch索引长度?如何增加nutch索引长度?}
elseif(excerpt1==null&&excerpt2==null){
如何增加nutch索引长度?
return0;
如何增加nutch索引长度?}

如何增加nutch索引长度?
如何增加nutch索引长度?
intnumToks1=excerpt1.numUniqueTokens();
如何增加nutch索引长度?
intnumToks2=excerpt2.numUniqueTokens();
如何增加nutch索引长度?
如何增加nutch索引长度?如何增加nutch索引长度?
if(numToks1<numToks2){
如何增加nutch索引长度?
return-1;
如何增加nutch索引长度?如何增加nutch索引长度?}
elseif(numToks1==numToks2){
如何增加nutch索引长度?
returnexcerpt1.numFragments()-excerpt2.numFragments();
如何增加nutch索引长度?如何增加nutch索引长度?}
else{
如何增加nutch索引长度?
return1;
如何增加nutch索引长度?}

如何增加nutch索引长度?}

如何增加nutch索引长度?}

如何增加nutch索引长度?);
如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Iteratethroughalltermsinthedocument
如何增加nutch索引长度?
//
如何增加nutch索引长度?
intlastExcerptPos=0;
如何增加nutch索引长度?如何增加nutch索引长度?
for(inti=0;i<tokens.length;i++){
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Ifwefindatermthat'sinthequery...
如何增加nutch索引长度?
//
如何增加nutch索引长度?如何增加nutch索引长度?
if(highlight.contains(tokens[i].termText())){
如何增加nutch索引长度?
//
如何增加nutch索引长度?//StartsearchingatapointSUM_CONTEXTtermsback,
如何增加nutch索引长度?
//andmoveSUM_CONTEXTtermsintothefuture.
如何增加nutch索引长度?
//
如何增加nutch索引长度?
intstartToken=(i>SUM_CONTEXT)?i-SUM_CONTEXT:0;
如何增加nutch索引长度?
intendToken=Math.min(i+SUM_CONTEXT*20,tokens.length);
如何增加nutch索引长度?
intoffset=tokens[startToken].startOffset();
如何增加nutch索引长度?
intj=startToken;
如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Iteratefromthestartpointtothefinish,adding
如何增加nutch索引长度?
//termsalltheway.Theendofthepassageisalways
如何增加nutch索引长度?
//SUM_CONTEXTbeyondthelastquery-term.
如何增加nutch索引长度?
//
如何增加nutch索引长度?
Excerptexcerpt=newExcerpt();
如何增加nutch索引长度?如何增加nutch索引长度?
if(i!=0){
如何增加nutch索引长度?excerpt.add(
newSummary.Ellipsis());
如何增加nutch索引长度?}

如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Iteratethroughaslongaswe'rebeforetheendof
如何增加nutch索引长度?
//thedocumentandwehaven'thitthemax-number-of-items
如何增加nutch索引长度?
//-in-a-summary.
如何增加nutch索引长度?
//
如何增加nutch索引长度?
Tokena=null;
如何增加nutch索引长度?如何增加nutch索引长度?
while((j<endToken)&&(j-startToken<SUM_LENGTH)){
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Nowgrabthehit-element,ifpresent
如何增加nutch索引长度?
//
如何增加nutch索引长度?
Tokent=tokens[j];
如何增加nutch索引长度?如何增加nutch索引长度?
if(highlight.contains(t.termText())){
如何增加nutch索引长度?excerpt.addToken(t.termText());
如何增加nutch索引长度?
//System.out.println("Text:"+text.substring(offset,t.startOffset())+"OffSet:"+offset+"Start:"+t.startOffset());
如何增加nutch索引长度?excerpt.add(newFragment(text.substring(offset,t.startOffset())));
如何增加nutch索引长度?excerpt.add(
newHighlight(text.substring(t.startOffset(),
如何增加nutch索引长度?t.endOffset())));
如何增加nutch索引长度?a
=(Token)t.cloneToken();
如何增加nutch索引长度?offset
=a.endOffset();
如何增加nutch索引长度?
如何增加nutch索引长度?
//endToken=Math.min(j+SUM_LENGTH,tokens.length);
如何增加nutch索引长度?}

如何增加nutch索引长度?j++;
如何增加nutch索引长度?}

如何增加nutch索引长度?
如何增加nutch索引长度?如何增加nutch索引长度?
{
如何增加nutch索引长度?如何增加nutch索引长度?
{
如何增加nutch索引长度?
if(offset<text.length()&&Math.min(endToken,
如何增加nutch索引长度?i
+SUM_LENGTH)<tokens.length&&tokens[Math.min(endToken,
如何增加nutch索引长度?i
+SUM_LENGTH)].endOffset()<text.length())
如何增加nutch索引长度?如何增加nutch索引长度?
{
如何增加nutch索引长度?excerpt.add(
newFragment(text.substring(offset,
如何增加nutch索引长度?tokens[Math.min(endToken,
如何增加nutch索引长度?i
+SUM_LENGTH)].endOffset())));
如何增加nutch索引长度?
如何增加nutch索引长度?}

如何增加nutch索引长度?}

如何增加nutch索引长度?}

如何增加nutch索引长度?
如何增加nutch索引长度?
如何增加nutch索引长度?lastExcerptPos
=endToken;
如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Wefoundtheseriesofsearch-termhitsandadded
如何增加nutch索引长度?
//them(withinterveningtext)totheexcerpt.Now
如何增加nutch索引长度?
//weneedtoaddthetrailingedgeoftext.
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Soif(j<tokens.length)thenthereisstilltrailing
如何增加nutch索引长度?
//texttoadd.(Wehaven'thittheendofthesourcedoc.)
如何增加nutch索引长度?
//Addthewordssincethelasthit-terminsert.
如何增加nutch索引长度?
//
如何增加nutch索引长度?//if(j<tokens.length){
如何增加nutch索引长度?
//System.out.println(text.length()+"Ooffset:"+offset+"EndOff:"+tokens[j].endOffset()+""+text);
如何增加nutch索引长度?
//excerpt.add(newFragment(text.substring(offset,offset+tokens[j].endOffset())));
如何增加nutch索引长度?
//}
如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Rememberhowmanytermsareinthisexcerpt
如何增加nutch索引长度?
//
如何增加nutch索引长度?
excerpt.setNumTerms(j-startToken);
如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Storetheexcerptforlatersorting
如何增加nutch索引长度?
//
如何增加nutch索引长度?
excerptSet.add(excerpt);
如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//StartSUM_CONTEXTplacesaway.Thenext
如何增加nutch索引长度?
//searchforrelevantexcerptsbeginsati-SUM_CONTEXT
如何增加nutch索引长度?
//
如何增加nutch索引长度?
i=j+SUM_CONTEXT;
如何增加nutch索引长度?}

如何增加nutch索引长度?}

如何增加nutch索引长度?
如何增加nutch索引长度?
//
如何增加nutch索引长度?//Ifthetargettextdoesn'tappear,thenwejust
如何增加nutch索引长度?
//excerptthefirstSUM_LENGTHwordsfromthedocument.
如何增加nutch索引长度?
//
如何增加nutch索引长度?如何增加nutch索引长度?
if(excerptSet.size()==0){
如何增加nutch索引长度?Excerptexcerpt
=newExcerpt();
如何增加nutch索引长度?
intexcerptLen=Math.min(SUM_LENGTH,tokens.length);
如何增加nutch索引长度?lastExcerptPos
=excerptLen;
如何增加nutch索引长度?
如何增加nutch索引长度?excerpt.add(
newFragment(text.substring(tokens[0].startOffset(),tokens[excerptLen-1].startOffset())));
如何增加nutch索引长度?excerpt.setNumTerms(excerptLen);
如何增加nutch索引长度?excerptSet.add(excerpt);
如何增加nutch索引长度?}

如何增加nutch索引长度?

本文地址:http://www.45fan.com/dnjc/72872.html
Tags: 索引 高亮 Nutch
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部