При тестировании Apache Lucene v7.5 я заметил странное поведение: я проиндексировал дамп английской Википедии (5 677 776 документов), используя Lucene, с SimpleAnalyzer (без стоп-слов, без прохождения)
Затем я искал индекс сследующие запросы:
- the totalHits = 5 382 873
- who totalHits = 1 687 254
- кто totalHits = 5,411,305
- "кто" totalHits = 8,827
Номер результата для логического запроса кто больше, чем номер результата для одного члена и номер результата для одного члена who , когда он должен быть меньше обоих.
Есть ли объяснение этому?
Фрагмент кода:
analyzer = new SimpleAnalyzer();
MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[]{"title", "content","domain","url"},analyzer);
// Parse
Query q = parser.parse(querystr);
// top-10 results
int hitsPerPage = 10;
IndexReader indexReader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(indexReader);
// Ranker
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage);
// Search
searcher.search(q, collector);
// Retrieve the top-10 documents
TopDocs topDocs=collector.topDocs();
ScoreDoc[] hits = topDocs.scoreDocs;
totalHits=topDocs.totalHits;
System.out.println("query: "+querystr + " " + hits.length+" "+String.format("%,d",totalHits));