Hi,

Highlighter is working with only with IndexSearcher object, but I wants to
search in Multiple Indexes. I have created a sample with MultiSearcher, and
wants to rewrite the user query becasue of "'for any multi-term queries to
work (prefix, wildcard, range,fuzzy etc) you must use a rewritten query!"
..so what should I do...

This code with IndexSearcher :

           Dim query As Lucene.Net.Search.Query = Nothing
           Dim sf() As String
           ReDim sf(0)
           sf(0) = "column3"
           query = New Lucene.Net.QueryParsers.MultiFieldQueryParser(sf,
New Lucene.Net.Analysis.Standard.StandardAnalyzer).Parse(TextBox1.Text)
           Dim searcher As Lucene.Net.Search.IndexSearcher = New
Lucene.Net.Search.IndexSearcher("C:\CSVIndex")
           Dim reader As Lucene.Net.Index.IndexReader
           reader = Lucene.Net.Index.IndexReader.Open("C:\CSVIndex")

           'for any multi-term queries to work (prefix, wildcard,
range,fuzzy etc) you must use a rewritten query!
           query = query.Rewrite(reader)
           Dim hits As Lucene.Net.Search.Hits = searcher.Search(query)

           Dim highlighter As Lucene.Net.Highlight.Highlighter = New
Lucene.Net.Highlight.Highlighter(New Lucene.Net.Highlight.QueryScorer
(query))
           highlighter.SetTextFragmenter(New
Lucene.Net.Highlight.SimpleFragmenter(20))

           Dim analyzer As New
Lucene.Net.Analysis.Standard.StandardAnalyzer
           Dim i As Integer = 0
           MsgBox("Total Hits " & hits.Length)
           While i < hits.Length
               Dim text As String = hits.Doc(i).Get("column3")
               If Not text Is Nothing Then
                   Dim tokenStream As Lucene.Net.Analysis.TokenStream =
analyzer.TokenStream("column3", New System.IO.StringReader(text))
                   Dim result As String =
highlighter.GetBestFragments(tokenStream,
text, 2, "...")
               End If
               i = i + 1
           End While


Thanks in advance,
LM

Reply via email to