Lucene.net не возвращает результаты поиска - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть 8 текстовых файлов, содержащих около 5 миллионов строк похожих закодированных данных-

- Выделение пути TRNS_Legacy_773 типа TRNS_Legacy для DEV \ svcInformational_1_7 через документ # 12478901.В настоящее время существует 35 таких путей, из которых 1 используется

-Msg (len: 482), отправленное TRNS_Legacy_773: 'FETCHIT IMG 771777777291; 1; 577; 17; SAI13761671; 1; 577; IMG 771777771191; 1; 1; 15; 707747 261174767; 23; 19; 07; 187; 314; 315; 315; 316; 318; 327; 486; 480; 670; 230; 238; 239; 247; 279; 427; 421; 109; 512; 924;935; 936; IMG 771777777501; 1; 1; 15; 707747 261174767; 9; 5; 64; 65; 66; 01; 06; 122; 184; 940; IMG 771777777641; 1; 1; 15; 82748/4141541; 9; 245; 246; 249; 248; 244; 243; 242; 241; 620; IMG 771777771321; 1; 1; 15; 707747 261174767; 29; 4; 19; 25; 20; 62; 64; 65; 66; 07; 87; 81; 82; 122; 187; 194; 241; 245; 370; 315; 316; 316; 319; 579; 517; 512; 525; 587; 027; 935; 936; '

- Сообщениеrcvd и коррелированный на TRNS_Legacy_773, коррелятором был «IAS1376167».Время отклика составляло 31 мс.

Я проиндексировал файлы с помощью стандартного анализатора lucene.net.Когда я пытаюсь найти подстроку, такую ​​как «4141541» или «FETCHIT», поиск возвращает 0 результатов.Я использовал Люка и вижу, что данные присутствуют в индексе.Я могу искать, используя номер строки, но не используя текст.Кто-нибудь может мне помочь?

Я пытался использовать групповой поиск, пробовал разные запросы, пробовал разные анализаторы, сохранял мой текст как токенизированный, так и не маркерный, но он либо возвращает 0 результатов, либо возвращает только 1 или 2строк, даже если должно быть возвращено 1000 строк.

Индекс здания-

public void BuildIndex(string item)
    {

        string indexPath = string.Format(baseIndexPath, item);
        if (System.IO.Directory.Exists(indexPath))
        {
            System.IO.Directory.Delete(indexPath, true);
        }

        luceneIndexDirectory = FSDirectory.GetDirectory(indexPath);
        writer = new IndexWriter(indexPath, analyzer, true);
        //writer = new IndexWriter(luceneIndexDirectory, analyzer, true);

        string file = string.Format(@"LogFile.txt");
        string line=string.Empty;
        int count = 0;
        StreamReader fileReader = new StreamReader(file);
        while ((line = fileReader.ReadLine()) != null)
        {
            count++;
            Document doc = new Document();
            doc.Add(new Field("LineNumber", count.ToString(), Field.Store.YES, Field.Index.UN_TOKENIZED));
            doc.Add(new Field("LineText", line, Field.Store.YES, Field.Index.UN_TOKENIZED));

            writer.AddDocument(doc);
        }
        writer.Optimize();
        writer.Flush();
        writer.Close();
        luceneIndexDirectory.Close();
    }

public IEnumerable Search (string searchTerm) {

        IndexSearcher searcher = new IndexSearcher(luceneIndexDirectory);
        QueryParser parser = new QueryParser("LineText", analyzer);
        TermQuery tQuery = new TermQuery(new Term("LineText",searchTerm));
        Query query = parser.Parse(searchTerm);
        Hits hitsFound = searcher.Search(query); //returns 0 results
        hitsFound = searcher.Search(tQuery); //returns 0 results
        List<SampleDataFileRow> results = new List<SampleDataFileRow>();
        SampleDataFileRow sampleDataFileRow = null;

        for (int i = 0; i < hitsFound.Length(); i++)
        {
            sampleDataFileRow = new SampleDataFileRow();
            Document doc = hitsFound.Doc(i);
            sampleDataFileRow.LineNumber = int.Parse(doc.Get("LineNumber"));
            sampleDataFileRow.LineText = doc.Get("LineText");


            results.Add(sampleDataFileRow);
        }

        return results.ToList();
    }
...