Lucene BooleanQuery ИЛИ вывод не так, как хотел - PullRequest
0 голосов
/ 27 мая 2018

у меня есть индекс с некоторыми документами, 593 документа, которые содержат слово computer , и 51 документ, который содержит слово science , и 596 документов, которые содержат слова computerИЛИ наука , я хочу превзойти эти 596 документов, вот мой код:

public class Main
{
    public static void main(String args[]) throws IOException, ParseException{

        String[] champ ={"W", "A"};
       BooleanQuery q = new BooleanQuery();

              BooleanQuery qIntermediaire;
        qIntermediaire = new BooleanQuery();
        for(int i=0;i<champ.length;i++){
           qIntermediaire.add(new BooleanClause(new FuzzyQuery(new Term(champ[i], "computer"), 0), BooleanClause.Occur.SHOULD));
       }
       q.add(new BooleanClause(qIntermediaire, BooleanClause.Occur.MUST));
       qIntermediaire = new BooleanQuery();
       for(int i=0;i<champ.length;i++){
           qIntermediaire.add(new BooleanClause(new FuzzyQuery(new Term(champ[i], "science"), 0), BooleanClause.Occur.SHOULD));
       }
       q.add(new BooleanClause(qIntermediaire, BooleanClause.Occur.SHOULD));


         Path indexPath = Paths.get("MonIndex");
        Directory directory = FSDirectory.open(indexPath);
        DirectoryReader reader = DirectoryReader.open(directory);
        IndexSearcher iSearcher = new IndexSearcher(reader);

        TopDocs topdocs = iSearcher.search(q, 10000);
        ScoreDoc[] resultsList = topdocs.scoreDocs;

             System.out.println(resultsList.length);


    }

}

, по некоторым причинам это дает мне 461 документ: (*

...