com.dubture.indexing.core.index.QueryBuilder.java Source code

Java tutorial

Introduction

Here is the source code for com.dubture.indexing.core.index.QueryBuilder.java

Source

/*******************************************************************************
 * This file is part of the lucene indexing eclipse plugin.
 * 
 * (c) Robert Gruendler <r.gruendler@gmail.com>
 * 
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 ******************************************************************************/
package com.dubture.indexing.core.index;

import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.PrefixQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;

import com.dubture.indexing.core.IndexingCorePlugin;

/**
 * 
 * Simple lucene QueryBuilder.
 * 
 * @author Robert Gruendler <r.gruendler@gmail.com>
 *
 */
public class QueryBuilder {
    public static Query createFileQuery(IFile file, String referenceId) {
        String filename = file.getName();
        IPath path = file.getFullPath();

        IndexingCorePlugin.debug("Getting fileQuery for " + file.getName());

        PrefixQuery query = new PrefixQuery(new Term(IndexField.PATH, path.toString()));
        TermQuery nameQuery = new TermQuery(new Term(IndexField.FILENAME, filename));
        TermQuery refQuery = new TermQuery(new Term(IndexField.TYPE, referenceId));

        BooleanQuery boolQuery = new BooleanQuery();
        boolQuery.add(query, BooleanClause.Occur.MUST);
        boolQuery.add(nameQuery, BooleanClause.Occur.MUST);
        boolQuery.add(refQuery, BooleanClause.Occur.MUST);

        IndexingCorePlugin.debug("query: " + boolQuery.toString());
        return boolQuery;
    }

    public static Query createPathQuery(IPath path, String referenceId) {
        IndexingCorePlugin.debug("Getting pathquery for " + path.toString());

        PrefixQuery query = new PrefixQuery(new Term(IndexField.PATH, path.toString()));
        TermQuery refQuery = new TermQuery(new Term(IndexField.TYPE, referenceId));

        BooleanQuery boolQuery = new BooleanQuery();
        boolQuery.add(query, BooleanClause.Occur.MUST);
        boolQuery.add(refQuery, BooleanClause.Occur.MUST);

        IndexingCorePlugin.debug("query: " + boolQuery.toString());
        return boolQuery;
    }

    public static Query createDeleteReferencesQuery(IFile file, String type) {
        BooleanQuery boolQuery = new BooleanQuery();
        String path = file.getFullPath().toString();

        boolQuery.add(new TermQuery(new Term(IndexField.PATH, path)), BooleanClause.Occur.MUST);

        boolQuery.add(new TermQuery(new Term(IndexField.FILENAME, file.getName())), BooleanClause.Occur.MUST);

        boolQuery.add(new TermQuery(new Term(IndexField.TYPE, type)), BooleanClause.Occur.MUST);

        IndexingCorePlugin.debug("Creating deleteByReference query: " + boolQuery.toString());

        return boolQuery;
    }
}