Lucene conditioanl search - PullRequest
       14

Lucene conditioanl search

0 голосов
/ 27 мая 2019

Я использую Lucene для выполнения BM25 в списке документов.

DirectoryReader indexReader = DirectoryReader.Open(directory);
IndexSearcher searcher = new IndexSearcher(indexReader);
searcher.Similarity = this.similarity;

QueryParser queryParser = new QueryParser(Lucene.Net.Util.LuceneVersion.LUCENE_48, SEARCH_FIELD, this.analyzer);
Query query = queryParser.Parse(seatch_text);

TopDocs searchResults = searcher.Search(query, null, indexReader.MaxDoc);
ScoreDoc[] scoreDocs = searchResults.ScoreDocs;

Теперь я хотел бы получить набор документов с оценкой, который содержит хотя бы одно слово из определенного списка,Так что-то вроде этого:

List<string> accepted_sentances = new List<string>(); 
List<string> key_words= new List<string>({ "word1", "word2"});
foreach (var doc_score in scoreDocs)
{
     var doc = searcher.Doc(doc_score.Doc);
     string _sentance = doc.GetField("Sentence").GetStringValue();
     foreach (var word in key_words)
     {
          if (_sentance.Contains(word))
               accepted_sentances.Add(_sentance)
     }
} 

Я предполагаю, что это не самый удобный и эффективный способ достижения этого.Есть ли способ сделать это с помощью запросов Lucene?

...