List of usage examples for org.apache.lucene.queryparser.classic MultiFieldQueryParser parse
public static Query parse(String[] queries, String[] fields, Analyzer analyzer) throws ParseException
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; }