From cea856ab6055035691e97069c5303594068e3fb4 Mon Sep 17 00:00:00 2001 From: coolneng Date: Mon, 11 Jan 2021 20:59:56 +0100 Subject: [PATCH] Add Searcher class --- pom.xml | 5 +++ src/main/java/org/RI/P2/Searcher.java | 58 +++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/main/java/org/RI/P2/Searcher.java diff --git a/pom.xml b/pom.xml index 5192c9c..dde05fa 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,11 @@ lucene-analyzers-common 8.6.3 + + org.apache.lucene + lucene-queryparser + 8.6.3 + com.google.code.gson gson diff --git a/src/main/java/org/RI/P2/Searcher.java b/src/main/java/org/RI/P2/Searcher.java new file mode 100644 index 0000000..2c70b43 --- /dev/null +++ b/src/main/java/org/RI/P2/Searcher.java @@ -0,0 +1,58 @@ +package org.RI.P2; + +import java.io.IOException; +import java.nio.file.Paths; +import java.text.ParseException; + +import org.apache.lucene.analysis.core.WhitespaceAnalyzer; +import org.apache.lucene.index.DirectoryReader; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.store.Directory; +import org.apache.lucene.store.FSDirectory; +import org.apache.lucene.search.IndexSearcher; +import org.apache.lucene.search.Query; +import org.apache.lucene.search.TopDocs; +import org.apache.lucene.queryparser.classic.QueryParser; + +public class Searcher { + + IndexReader index; + String dataPath; + String indexPath; + + Searcher(String dataPath, String indexPath) { + this.dataPath = dataPath; + this.indexPath = indexPath; + } + + IndexSearcher createIndexSearcher() throws IOException { + Directory indexDirectory = FSDirectory.open(Paths.get(indexPath)); + IndexReader indexReader = DirectoryReader.open(indexDirectory); + IndexSearcher searcher = new IndexSearcher(indexReader); + return searcher; + } + + TopDocs searchFiles(String queryString, int resultNumber) + throws IOException, org.apache.lucene.queryparser.classic.ParseException { + IndexSearcher searcher = createIndexSearcher(); + Query query = new QueryParser("abstract", new WhitespaceAnalyzer()).parse(queryString); + TopDocs topDocs = searcher.search(query, resultNumber); + return topDocs; + } + + private static void usage() { + System.out.println("Usage: Searcher "); + System.exit(1); + } + + public static void main(String[] args) throws IOException, ParseException { + if (args.length != 1) { + usage(); + } + String dataDirectory = args[0]; + String indexDirectory = ".index"; + Indexer indexer = new Indexer(dataDirectory, indexDirectory); + indexer.populateIndex(); + Searcher searcher = new Searcher(dataDirectory, indexDirectory); + } +}