2016-12-09 11 views
1

を返します。のLucene:FastVectorHighlighterは、ここに私がやったことだヌル

String textField1 = fastVectorHighlighter.getBestFragment(fastVectorHighlighter.getFieldQuery(query), indexReader, docId, SearchItem.FIELD_TEXT_FIELD1, DEFAULT_FRAGMENT_LENGTH); 

ここqueryです:

((FIELD_TEXT_FIELD1:十五*)^4.0) (FIELD_TEXT_FIELD3:十五*) 

オリジナルのテキストは、(。indexReader.document(docId).get(SearchItem.FIELD_TEXT_FIELD3)が正しい)が正しい、間違いqueryに文字が含まれています。解決

Field textField1 = new TextField(SearchItem.FIELD_TEXT_FIELD1, "", Field.Store.YES); 

答えて

1

問題:ここで

どうインデックステキストフィールド1です!

それは結局のところ、私は

fastVectorHighlighter.getFieldQuery(query) 

fastVectorHighlighter.getFieldQuery(query, indexReader) 

FieldQuery#flattenにコードをフォロー変更する必要があり、我々はLuceneのはPrefixQueryを扱っていない通常の方法を見つけるだろう

} else if (sourceQuery instanceof CustomScoreQuery) { 
     final Query q = ((CustomScoreQuery) sourceQuery).getSubQuery(); 
     if (q != null) { 
     flatten(applyParentBoost(q, sourceQuery), reader, flatQueries); 
     } 
    } else if (reader != null) { // <<====== Here it is! 
     Query query = sourceQuery; 
     if (sourceQuery instanceof MultiTermQuery) { 
     MultiTermQuery copy = (MultiTermQuery) sourceQuery.clone(); 
     copy.setRewriteMethod(new MultiTermQuery.TopTermsScoringBooleanQueryRewrite(MAX_MTQ_TERMS)); 
     query = copy; 
     } 
     Query rewritten = query.rewrite(reader); 
     if (rewritten != query) { 
     // only rewrite once and then flatten again - the rewritten query could have a speacial treatment 
     // if this method is overwritten in a subclass. 
     flatten(rewritten, reader, flatQueries); 

     } 

私たちはそれが必要と見ることができますIndexReader fo r PrefixQuery,FuzzyQueryなど

関連する問題