Thank you so much for your patience and support but i am still not
getting the correct result. Here is my code can you please tell me
what wrong have i done in it? (I don't want to use
org.apache.search.hit so i have used terms in place of that)



package highlighted;

import java.io.FileWriter;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermEnum;
import org.apache.lucene.index.TermPositions;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.Fragmenter;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.spans.SpanTermQuery;
import org.apache.lucene.search.spans.Spans;
import org.apache.lucene.store.Directory;

@SuppressWarnings({ "deprecation", "unused" })
public class testsearch {
        public static String FIELD_NAME="text";
        private Query query;
        public Hits hits = null;
        Analyzer analyzer= new StandardAnalyzer();

                
        public void doSearching(String queryString,Directory dir) throws 
Exception
        { QueryParser parser= new QueryParser(FIELD_NAME,analyzer);//new
StandardAnalyzer());
        query=parser.parse(queryString);
        
                IndexSearcher Searcher = new IndexSearcher(dir);
                
                IndexReader reader = IndexReader.open(dir);
                 TermEnum te = reader.terms();
                
                hits=Searcher.search(query);
                
                 while ( te.next() ) {
        
             Term tt = te.term();
        
                 String fieldOfTerm = tt.field();
                
                int dummy= fieldOfTerm.compareTo("text");
                int dummy1= fieldOfTerm.compareTo("path");
                boolean anscontents=false;
                boolean anspath=false;
                if (dummy==0)
                anscontents=true;
                
                if(dummy1==0)
                        anspath=true;
                
                
                
                 if (anscontents ) {
                         anscontents=false;
                        if(tt.text().equals(queryString))
                        { System.out.println("Content field found--->>"+ 
tt.text());
                        doStandardHighlights(tt.text());
                        }
                        
                 }
                 if ( anspath ) {anspath=false;
                        
                 }
                 }

        }

        
        void doStandardHighlights(String text) throws Exception
        {
                Highlighter highlighter = new Highlighter(new 
QueryScorer(query));
            highlighter.setTextFragmenter(new SimpleFragmenter(200));
            int maxNumFragmentsRequired=200;
                 String FragmentSeparator="...";
                 Fragmenter fragmenter = new SimpleFragmenter(50);

                   highlighter.setTextFragmenter(fragmenter);
                        
                 TokenStream tokenStream=analyzer.tokenStream(FIELD_NAME,new
StringReader(text));
             String 
result=highlighter.getBestFragments(tokenStream,text,maxNumFragmentsRequired,FragmentSeparator);
        
                System.out.println( "This is the result "+result);
                
            FileWriter writer = new FileWriter("/root/Desktop/dummy");
                    writer.write("<html>");
                    writer.write("<script>\n" +
       ".highlight {\n" +

                " background: yellow;\n" +
                "}\n" +
                "</style>\n"+ "</script>" );

            writer.write(result);
            writer.write("</body></html>");
            writer.close();
                
          }
        
        

   }



And the main program  i am using is as follows:

package highlighted;

import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

public class maintestsearch {
        
        public static void main(String[] args) throws Exception {
                Directory dir=FSDirectory.getDirectory("/root/indexed");
                
                testsearch ob=new testsearch();
                ob.doSearching("alaska",dir);
        

        }

}


and the output it shows is :

Content field found--->>alaska
This is the result <B>alaska</B>



On 27/05/2009, KK <dioxide.softw...@gmail.com> wrote:
> @Ritu
> Wouter's reply must have fixed the problem, right? Or still stuck?
>
> --KK
>
> On Wed, May 27, 2009 at 1:46 PM, Wouter Heijke <whei...@xs4all.nl> wrote:
>
>> Hi,
>> It sounds to me that you are highlighting the query string and not the
>> document. You will have to pass the document's content to
>> getBestFragments() and it will work I think.
>>
>> Wouter
>>
>> > hi there,
>> >     I am using lucene highlighter to highlight the searched result
>> > but it shows only the query string in bold highlights.
>> > IS THERE ANY WAY I CAN USE IT TO SHOW THE HIGHLIGHTED TEXT IN THE
>> > DOCUMENT WHERE IT IS FOUND?
>> >  I need to show the searched terms in highlights in the
>> > document where it is found and i want to do it without using
>> > org.apache.lucene.search.Hits
>> > Please help. Thanks in advance.
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
>> For additional commands, e-mail: java-user-h...@lucene.apache.org
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to