Example usage for org.apache.lucene.queryparser.classic MultiFieldQueryParser parse

List of usage examples for org.apache.lucene.queryparser.classic MultiFieldQueryParser parse

Introduction

In this page you can find the example usage for org.apache.lucene.queryparser.classic MultiFieldQueryParser parse.

Prototype

public static Query parse(String[] queries, String[] fields, Analyzer analyzer) throws ParseException 

Source Link

Document

Parses a query which searches on the fields specified.

Usage

From source file:de.anycook.db.lucene.FulltextIndex.java

License:Open Source License

private boolean checkIfRecipeExists(String recipeName) throws IOException {
    try (IndexReader reader = DirectoryReader.open(index)) {
        IndexSearcher searcher = new IndexSearcher(reader);
        MultiFieldQueryParser.parse(new String[] { recipeName }, new String[] { "title" }, analyzer);
        Query query = new QueryParser("title", analyzer).parse(recipeName);
        TopDocs topdocs = searcher.search(query, 1);
        if (topdocs.totalHits > 0) {
            return true;
        }/*from  w ww.j a  v a  2  s  .c  o m*/
    } catch (CorruptIndexException | ParseException e) {
        throw new IOException(e);
    }

    return false;
}

From source file:edu.pucp.igc.piscosemanticsearch.Buscador.java

public ResultadosDeBusqueda buscar(String[] textosABuscar, String[] camposAConsultar)
        throws ParseException, IOException {

    ScoreDoc[] listaScoreDoc;/* w w  w . ja  v  a2  s .  c  o  m*/
    Query query = MultiFieldQueryParser.parse(textosABuscar, camposAConsultar, new SpanishAnalyzer());

    //        System.out.println("Busqueda en el campo " + Utilities.collapseStrings(camposAConsultar, " ") + ": " + query);
    listaScoreDoc = indexSearcher.search(query, 100).scoreDocs;

    ResultadosDeBusqueda resultados = new ResultadosDeBusqueda(ScoreDocsToDocumentos(listaScoreDoc),
            textosABuscar[0], query.toString());
    //        visualizarDocumentos(listaScoreDoc);
    return resultados;

}

From source file:edu.pucp.igc.piscosemanticsearch.Buscador.java

public ScoreDoc[] buscarDocumentosDePisco(String textoABuscar) {
    ScoreDoc[] listaScoreDoc = null;/*from   w ww.  j av  a  2  s.  c  o m*/
    try {

        //        QueryParser parser = new QueryParser("pisco", analizador);
        Query query = MultiFieldQueryParser.parse(new String[] { textoABuscar }, new String[] { "pisco" },
                new SpanishAnalyzer());

        //        Query query = parser.parse(textoABuscar);
        //            System.out.println("Busqueda textual de Pisco: " + query);
        listaScoreDoc = indexSearcher.search(query, 1000).scoreDocs;

        visualizarDocumentosDePisco(listaScoreDoc);

    } catch (ParseException ex) {
        Logger.getLogger(Buscador.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(Buscador.class.getName()).log(Level.SEVERE, null, ex);
    }
    return listaScoreDoc;

}

From source file:fr.univ_tours.etu.searcher.Searcher.java

public List<ResultObject> search(SearchQueriesRequest query) throws IOException, ParseException {

    Map<String, String> queriesDictionary = query.getQueriesDictionary();
    boolean useQueryExpansion = query.isUseQueryExpansion();
    List<Integer> docsToExpand = (useQueryExpansion) ? new ArrayList<>() : null;

    List<String> fsa = new ArrayList<>();
    List<String> qsa = new ArrayList<>();
    String contentLemmas = "";
    if (queriesDictionary.containsKey(DocFields.CONTENTS)) {
        regularTokenizer.tokenize(queriesDictionary.get(DocFields.CONTENTS), true);
        caselessTokenizer.tokenize(queriesDictionary.get(DocFields.CONTENTS), true);
        contentLemmas = caselessTokenizer.getLemmaString();
        System.out.println("Lemmas: " + caselessTokenizer.getLemmaList());
        String neString = "";
        if (caselessTokenizer.getNeList() != null && caselessTokenizer.getNeList().size() != 0) {
            neString = caselessTokenizer.getNeString(";", true);
            System.out.println("NE caseless: " + neString);
        }/*  ww w  .  ja  v  a2 s  .  com*/
        if (regularTokenizer.getNeList() != null && regularTokenizer.getNeList().size() != 0) {
            neString += ";" + regularTokenizer.getNeString(";", true);
            System.out.println("NE all: " + neString);
        }
        if (!"".equals(neString)) {
            fsa.add(DocFields.NAMED_ENTITIES);
            qsa.add(neString);
        }

    }

    for (Map.Entry<String, String> entry : queriesDictionary.entrySet()) {
        fsa.add(entry.getKey());
        if (entry.getKey().equals(DocFields.CONTENTS) || entry.getKey().equals(DocFields.SYNONYMS)) {
            qsa.add(contentLemmas);
        } else {
            qsa.add(entry.getValue());
        }
    }

    Query q = MultiFieldQueryParser.parse(qsa.toArray(new String[qsa.size()]),
            fsa.toArray(new String[fsa.size()]), analyzer);

    IndexSearcher searcher = new IndexSearcher(reader);
    TopDocs docs = searcher.search(q, this.numRetrievedDocs);
    ScoreDoc[] hits = docs.scoreDocs;

    List<ResultObject> resultObjects = new ArrayList<>();

    String result = "";
    for (int i = 0; i < hits.length; ++i) {
        int docId = hits[i].doc;
        if (useQueryExpansion) {
            docsToExpand.add(docId);
        }
        Document d = searcher.doc(docId);
        resultObjects.add(new ResultObject(docId, i, d.get(DocFields.TITLE), d.get(DocFields.AUTHOR),
                d.get(DocFields.FILE_PATH), d.get(DocFields.SUMMARY), d.get(DocFields.FILE_NAME)));
        result = d.get(DocFields.SUMMARY);
    }

    if (useQueryExpansion) {
        reader.close();

        this.reader = DirectoryReader.open(FSDirectory.open(new File(this.indexDir).toPath()));
        searcher = new IndexSearcher(reader);
        MoreLikeThis mlt = new MoreLikeThis(reader);
        mlt.setMinTermFreq(0);
        mlt.setMinDocFreq(0);
        mlt.setAnalyzer(analyzer);
        for (int i = 0; i < Math.min(docsToExpand.size(), 5); i++) {

            Reader r = new StringReader(resultObjects.get(i).getSummary());
            Query expandedQuery = mlt.like(DocFields.CONTENTS, r);

            TopDocs topDocs = searcher.search(expandedQuery, 5);

            for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
                if (!docsToExpand.contains(scoreDoc.doc)) {
                    docsToExpand.add(scoreDoc.doc);
                    Document aSimilar = searcher.doc(scoreDoc.doc);

                    resultObjects.add(new ResultObject(1, resultObjects.size(), aSimilar.get(DocFields.TITLE),
                            aSimilar.get(DocFields.AUTHOR), aSimilar.get(DocFields.FILE_PATH),
                            aSimilar.get(DocFields.SUMMARY), aSimilar.get(DocFields.FILE_NAME)));
                } else {
                }

            }
        }
    }

    return resultObjects;
}