You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@lucenenet.apache.org by Laxmilal Menaria <me...@gmail.com> on 2007/02/05 11:01:11 UTC

Highlighter and Multisearcher

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