如何使用apache lucene索引优化搜索



我正在使用apache lucene创建的索引搜索关键字,它返回包含给定关键字的文件名称,现在我想仅在lucene搜索返回的文件中再次优化搜索。如何使用apache lucene来优化搜索。我使用以下代码:

                    try
                    {
                     File indexDir=new File("path upto the index directory");
                    Directory directory = FSDirectory.open(indexDir);
                    IndexSearcher searcher = new IndexSearcher(directory, true);
                    QueryParser parser = new QueryParser(Version.LUCENE_36, "contents", new SimpleAnalyzer(Version.LUCENE_36));
                    Query query = parser.parse(qu);
                    query.setBoost((float) 1.5);
                    TopDocs topDocs = searcher.search(query, maxhits);
                    ScoreDoc[] hits = topDocs.scoreDocs;
                    len = hits.length;
                    int docId = 0;
                    Document d;

                for ( i = 0; i<len; i++) {
                 docId = hits[i].doc;
                d = searcher.doc(docId);
                filename= d.get(("filename"));
                  }

                  }

         catch(Exception ex){ex.printStackTrace();}

我已经在lucene索引中添加了文档,使用as contents和filename.

您希望使用布尔查询来处理类似这样的事情。这将允许您将原始搜索约束与改进的搜索约束相结合。

的例子:

    BooleanQuery query = new BooleanQuery();
    Query origSearch = getOrigSearch(searchString);
    Query refinement = makeRefinement();
    query.add(origSearch, Occur.MUST);
    query.add(refinement, Occur.MUST);
    TopDocs topDocs = searcher.search(query, maxHits);

最新更新