You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Michael Harhen <mi...@cox.net> on 2006/02/06 00:33:42 UTC

Suggested Patches to MultiPhraseQuery and QueryTermExtractor (for use with HighLighter)

I encountered a problem with the Highlighter, where it was not recognizing MultiPhraseQuery.
To fix this, I developed the following two patches:

=====================================================
1. Addition to org.apache.lucene.search.MultiPhraseQuery:

Add the following method:

 /** Returns the set of terms in this phrase. */
 public Term[] getTerms() {
   ArrayList allTerms = new ArrayList();
   Iterator iterator = termArrays.iterator();
   while (iterator.hasNext()) {
     Term[] terms = (Term[])iterator.next();
     for (int i = 0, n = terms.length; i < n; ++i) {
       allTerms.add(terms[i]);
     }
   }
   return (Term[])allTerms.toArray(new Term[0]);
 }

=====================================================
2. Patch to org.apache.lucene.search.highlight.QueryTermExtractor:

a) Add the following import:
import org.apache.lucene.search.MultiPhraseQuery;

b) Add the following code to the end of the getTerms(...) method:
       else  if(query instanceof MultiPhraseQuery)
               getTermsFromMultiPhraseQuery((MultiPhraseQuery) query, 
terms, fieldName);
   }

c) Add the following method:
  private static final void getTermsFromMultiPhraseQuery(MultiPhraseQuery query, HashSet terms, String fieldName)
  {
    Term[] queryTerms = query.getTerms();
    int i;

    for (i = 0; i < queryTerms.length; i++)
    {
        if((fieldName==null)||(queryTerms[i].field()==fieldName))
        {
            terms.add(new WeightedTerm(query.getBoost(),queryTerms[i].text()));
        }
    }
  }


=====================================================

Can the team update the repository?

Thanks
Michael Harhen







---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Re: Suggested Patches to MultiPhraseQuery and QueryTermExtractor (for use with HighLighter)

Posted by Erik Hatcher <er...@ehatchersolutions.com>.
Michael,

Would you please package this as a true patch file to a JIRA issue so  
that we have it officially logged and not forgotten in e-mail?

Thanks,
	Erik


On Feb 5, 2006, at 6:33 PM, Michael Harhen wrote:

> I encountered a problem with the Highlighter, where it was not  
> recognizing MultiPhraseQuery.
> To fix this, I developed the following two patches:
>
> =====================================================
> 1. Addition to org.apache.lucene.search.MultiPhraseQuery:
>
> Add the following method:
>
> /** Returns the set of terms in this phrase. */
> public Term[] getTerms() {
>   ArrayList allTerms = new ArrayList();
>   Iterator iterator = termArrays.iterator();
>   while (iterator.hasNext()) {
>     Term[] terms = (Term[])iterator.next();
>     for (int i = 0, n = terms.length; i < n; ++i) {
>       allTerms.add(terms[i]);
>     }
>   }
>   return (Term[])allTerms.toArray(new Term[0]);
> }
>
> =====================================================
> 2. Patch to org.apache.lucene.search.highlight.QueryTermExtractor:
>
> a) Add the following import:
> import org.apache.lucene.search.MultiPhraseQuery;
>
> b) Add the following code to the end of the getTerms(...) method:
>       else  if(query instanceof MultiPhraseQuery)
>               getTermsFromMultiPhraseQuery((MultiPhraseQuery)  
> query, terms, fieldName);
>   }
>
> c) Add the following method:
>  private static final void getTermsFromMultiPhraseQuery 
> (MultiPhraseQuery query, HashSet terms, String fieldName)
>  {
>    Term[] queryTerms = query.getTerms();
>    int i;
>
>    for (i = 0; i < queryTerms.length; i++)
>    {
>        if((fieldName==null)||(queryTerms[i].field()==fieldName))
>        {
>            terms.add(new WeightedTerm(query.getBoost(),queryTerms 
> [i].text()));
>        }
>    }
>  }
>
>
> =====================================================
>
> Can the team update the repository?
>
> Thanks
> Michael Harhen
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-dev-help@lucene.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org