代码模板:
public class Demo {
public static void main(String[] args) throws IOException, Exception {
//建立索引
String indexDirPath = util.Directory.GetAppPath("indexDir");
Path path = Paths.get(indexDirPath);
StandardAnalyzer analyzer = new StandardAnalyzer();
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
// indexWriterConfig.setSimilarity(similarity);
IndexWriter indexWriter = null;
FSDirectory dir = null;
try {
dir = FSDirectory.open(path);
indexWriter = new IndexWriter(dir, indexWriterConfig);
; } catch (IOException e) {
e.printStackTrace();
}
Document doc1 = new Document();
FieldType cntFieldAType = new FieldType();
cntFieldAType.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
cntFieldAType.setStored(true);
cntFieldAType.setTokenized(true);
doc1.add(new Field("content", "common1 hello hello", cntFieldAType));
indexWriter.addDocument(doc1);
Document doc2 = new Document();
doc2.add(new Field("content", "common2 common2 hello", cntFieldAType));
indexWriter.addDocument(doc2);
indexWriter.commit();
//查询索引
// QueryParser queryParser = new QueryParser("content", analyzer);
IndexReader r = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(r);
// Query query = queryParser.parse("common1 common2");
BoostQuery boostQuery = new BoostQuery(new TermQuery(new Term("content", "common1")), 1.5f);
BoostQuery boostQuery2 = new BoostQuery(new TermQuery(new Term("content", "common2")), 1f);
BooleanClause clause = new BooleanClause(boostQuery, Occur.SHOULD);
BooleanClause clause2 = new BooleanClause(boostQuery2, Occur.SHOULD);
Builder builder = new BooleanQuery.Builder();
BooleanQuery q = builder.add(clause).add(clause2).build();
TopDocs topDocs = searcher.search(q, 10);
for(ScoreDoc doc : topDocs.scoreDocs) {
System.out.println(searcher.doc(doc.doc));
}
}
}