代码模板:
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));}}}