Hi,

 

sorry for re-posting - I am new to this list...

 

I am switching from lucene.net 2.0.0.4 to lucene.net 2.9.1.1 and I have
problems in a very early state. 

 

With version 2.0.0.4 it works fine!

With version 2.9.1.1 on Microsoft it works fine

With version 2.9.1.1 on linux I always get the following errors:

 

################################

System.TypeInitializationException: An exception was thrown by the type
initializer for Lucene.Net.Store.FSDirectory --->
System.TypeInitializationException: An exception was thrown by the type
initializer for Lucene.Net.Util.Constants --->
System.NullReferenceException: Object reference not set to an instance
of an object

  at Lucene.Net.Util.Constants..cctor () [0x00000]

  --- End of inner exception stack trace ---

  at Lucene.Net.Store.FSDirectory..cctor () [0x00000]

  --- End of inner exception stack trace ---

  at ConsoleApplication1.Module1.Main () [0x00000]

################################

System.TypeInitializationException: An exception was thrown by the type
initializer for Lucene.Net.Index.IndexWriter --->
System.TypeInitializationException: An exception was thrown by the type
initializer for Lucene.Net.Index.DocumentsWriter --->
System.TypeInitializationException: An exception was thrown by the type
initializer for Lucene.Net.Util.Constants --->
System.NullReferenceException: Object reference not set to an instance
of an object

  at Lucene.Net.Util.Constants..cctor () [0x00000]

  --- End of inner exception stack trace ---

  at Lucene.Net.Store.FSDirectory..cctor () [0x00000]

  --- End of inner exception stack trace ---

  at Lucene.Net.Index.IndexWriter..cctor () [0x00000]

  --- End of inner exception stack trace ---

  at ConsoleApplication1.Module1.Main () [0x00000]

 

>From debugging I found the reason for the errors:

 

            dir =
Lucene.Net.Store.FSDirectory.GetDirectory(indexFileLocation, True)

 

and

 

            indexWriter = New Lucene.Net.Index.IndexWriter(dirR,
analyzer, True)

 

but I do not have any idea what's happen here.... I have attached the
source of my test application! 

 

Thanks for help & Regards,

 

Johannes

 

Module Module1
    Private MSFlag As Boolean = 
IIf(System.Environment.OSVersion.VersionString.ToLower Like "*microsoft*", 
True, False)
    Private DSC As Char = System.IO.Path.DirectorySeparatorChar
    Private NL As String = Environment.NewLine
    Private indexFileLocation As String = ""


    Sub Main()

        Try
            If MSFlag Then
                indexFileLocation = "c:\index\"
            Else
                indexFileLocation = "/tmp/LuceneIndexTest/"
            End If

            If Not System.IO.Directory.Exists(indexFileLocation) Then
                System.IO.Directory.CreateDirectory(indexFileLocation)
            End If

            Dim doc As Lucene.Net.Documents.Document
            Dim dir As Lucene.Net.Store.FSDirectory
            Try
                dir = 
Lucene.Net.Store.FSDirectory.GetDirectory(indexFileLocation, True)
            Catch ex As Exception
                Console.WriteLine("################################")
                Console.WriteLine(ex)
                dir = Nothing
            End Try

            Dim dirR As Lucene.Net.Store.RAMDirectory = New 
Lucene.Net.Store.RAMDirectory()
            Dim analyzer As Lucene.Net.Analysis.Analyzer = New 
Lucene.Net.Analysis.Standard.StandardAnalyzer
            Dim indexWriter As Lucene.Net.Index.IndexWriter
            Try
                indexWriter = New Lucene.Net.Index.IndexWriter(dirR, analyzer, 
True)
            Catch ex As Exception
                Console.WriteLine("################################")
                Console.WriteLine(ex)
                indexWriter = Nothing
            End Try

            'Stop if error:
            If IsNothing(dir) Then Exit Sub
            If IsNothing(indexWriter) Then Exit Sub

            'Create index:
            Dim i As Integer = 0
            For i = 1 To 10
                doc = New Lucene.Net.Documents.Document()
                Dim fldContent As Lucene.Net.Documents.Field
                fldContent = New Lucene.Net.Documents.Field("date", (i * 
250).ToString, Lucene.Net.Documents.Field.Store.YES, 
Lucene.Net.Documents.Field.Index.UN_TOKENIZED, 
Lucene.Net.Documents.Field.TermVector.NO)
                doc.Add(fldContent)
                fldContent = New Lucene.Net.Documents.Field("cc", "cc#" & 
i.ToString & "@drachenfels.de", Lucene.Net.Documents.Field.Store.YES, 
Lucene.Net.Documents.Field.Index.UN_TOKENIZED, 
Lucene.Net.Documents.Field.TermVector.NO)
                doc.Add(fldContent)
                fldContent = New Lucene.Net.Documents.Field("bcc", "bcc#" & 
i.ToString & "@drachenfels.de", Lucene.Net.Documents.Field.Store.YES, 
Lucene.Net.Documents.Field.Index.UN_TOKENIZED, 
Lucene.Net.Documents.Field.TermVector.NO)
                doc.Add(fldContent)
                indexWriter.AddDocument(doc)
                Debug.Print(i)
            Next
            indexWriter.Optimize()
            indexWriter.Close()

            'Add dirR to directory:
            Dim IW As Lucene.Net.Index.IndexWriter = New 
Lucene.Net.Index.IndexWriter(dir, analyzer, True)
            IW.SetWriteLockTimeout(1000)
            IW.AddIndexesNoOptimize(New Lucene.Net.Store.Directory() {dirR})
            IW.Optimize()
            IW.Close()

            'Suchen:
            dir = Lucene.Net.Store.FSDirectory.GetDirectory(indexFileLocation, 
False)
            Dim searcher As Lucene.Net.Search.IndexSearcher = New 
Lucene.Net.Search.IndexSearcher(dir)

            'Mehrere Felder durchsuchen:
            Dim b As Lucene.Net.Search.BooleanQuery = New 
Lucene.Net.Search.BooleanQuery
            Dim tq As Lucene.Net.Search.WildcardQuery = New 
Lucene.Net.Search.WildcardQuery(New Lucene.Net.Index.Term("to", "*"))
            b.Add(tq, Lucene.Net.Search.BooleanClause.Occur.SHOULD)

            tq = New Lucene.Net.Search.WildcardQuery(New 
Lucene.Net.Index.Term("cc", "*"))
            b.Add(tq, Lucene.Net.Search.BooleanClause.Occur.SHOULD)

            tq = New Lucene.Net.Search.WildcardQuery(New 
Lucene.Net.Index.Term("bcc", "*"))
            b.Add(tq, Lucene.Net.Search.BooleanClause.Occur.SHOULD)

            b.SetMaxClauseCount(Integer.MaxValue)

            Dim hits As Lucene.Net.Search.Hits = searcher.Search(b)

            'For i = 0 To hits.Length() - 1
            '    doc = hits.Doc(i)
            'Next

            Console.WriteLine(hits.Length)

            searcher.Close()
        Catch ex As Exception
            Console.WriteLine("################################")
            Console.WriteLine(ex)
            Console.WriteLine("################################")
        End Try

        
    End Sub

End Module

Reply via email to