package test;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.SearcherFactory;
import org.apache.lucene.search.SearcherManager;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class Searcher {
public static void search(String indexDir, String key) throws IOException, ParseException{
System.out.println("----------------------search------------------------");
Directory directory = FSDirectory.open(new File(indexDir));
SearcherManager sm = new SearcherManager(directory,new SearcherFactory());
IndexSearcher searcher = sm.acquire();
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47);
QueryParser parser = new QueryParser(Version.LUCENE_47, "catalog", analyzer);
Query query = parser.parse(key);
TopDocs hits = searcher.search(query, 10);
for(ScoreDoc doc : hits.scoreDocs){
Document document = searcher.doc(doc.doc);
System.out.println("catalog"+document.get("catalog")+"brand_Id"+document.get("brand_Id")+"brand_Name_FacetAll"+document.get("brand_Name_FacetAll "));
}
}
public static void search2(){
System.out.println("----------------------search2------------------------");
try{
String indexReadPath= "D:/newindex/1";
Directory directory = null;
directory=FSDirectory.open(new File(indexReadPath));//打开索引文件夹
IndexReader reader=DirectoryReader.open(directory);//读取目录
IndexSearcher search=new IndexSearcher(reader);//初始化查询组件
int count = 0;
for(int i=0;i<reader.numDocs();i++){
Document doc=search.doc(i);//依次获取每个docid对应的Document
System.out.println("brand_Name:"+doc.get("groupIDCombination")+" brand_Id:"+doc.get("brand_Id"));
//可以在此部,做个批量操作,加快写入速度
count++;
}
System.out.println(count);
reader.close();//关闭资源
directory.close();//关闭连接
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException, ParseException {
String indexDir = "D:/newindex/1";
String key = "22001";
search(indexDir, key);
search2();
}
}
查询某个索引中某个字段并输出
最新推荐文章于 2022-08-17 10:13:04 发布