0

ルセンでいくつかの問題が発生しています。データベースにクエリを実行しています。私の知る限り、インデックスは問題ありません(lukeall-4.4.0でチェックしました)。クエリは次のように構成されます。

                Q = Query.split(" ");

                booleanQuery = new BooleanQuery();

                //Query[] Queryy = new Query[5 + 5 * Q.length];
                Query[] Queryy = new Query[3 + 3*Q.length];

                //USING THE ALL TEXT
                Queryy[0] = new TermQuery(new Term("DESIGNACAO", Query));
                Queryy[1] = new TermQuery(new Term("DESCRICAO", Query));
                Queryy[2] = new TermQuery(new Term("TAG", Query));

                //USING THE SEPARETED VALUES 
               for (int i = 3, j = 0; j < Q.length; i++, j++) {

                    Queryy[i] = new TermQuery(new Term("DESIGNACAO", Q[j]));
                    Queryy[++i] = new TermQuery(new Term("DESCRICAO", Q[j]));
                    Queryy[++i] = new TermQuery(new Term("TAG", Q[j]));

                }

                for (int i = 0; i < Queryy.length; i++) {
                    booleanQuery.add(Queryy[i], BooleanClause.Occur.MUST);
                }

クエリはOKです。「not or」を検索する場合、クエリ (booleanQuery) は次のようになります。

 +DESIGNACAO:not or  +DESCRICAO:not or  +TAG:not or  +DESIGNACAO:not +DESCRICAO:not +TAG:not +DESIGNACAO:or +DESCRICAO:or +TAG:or

私は SimpleAnalyser を使用しているため、「not and or will not」という単語は削除されません。ヒットが出ないのが難点。私のコードではなく lukeall-4.4.0 で検索した場合にのみヒットします。私の検索方法は次のとおりです。

IndexReader reader = IndexReader.open(directory1);
        TopScoreDocCollector collector = TopScoreDocCollector.create(50, true);
        searcher = new IndexSearcher(reader);
        searcher.search(booleanQuery, collector);
        hits = collector.topDocs().scoreDocs;
        int total = collector.getTotalHits();
        displayResults(); 

データの収集に何か問題がありますか??

敬具

4

1 に答える 1