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