Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApacheLucene索引优化搜索_Java_Indexing_Lucene - Fatal编程技术网

Java 如何使用ApacheLucene索引优化搜索

Java 如何使用ApacheLucene索引优化搜索,java,indexing,lucene,Java,Indexing,Lucene,我正在使用ApacheLucene创建的索引搜索一个关键字,它返回包含给定关键字的文件名,现在我只想在lucene搜索返回的文件中再次优化搜索。如何使用ApacheLucene优化搜索。 我正在使用以下代码 try { File indexDir=new File("path upto the index directory"); D

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

                    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();}
试试看
{
File indexDir=新文件(“指向索引目录的路径”);
Directory=FSDirectory.open(indexDir);
IndexSearcher=newindexSearcher(目录,true);
QueryParser解析器=新的QueryParser(Version.LUCENE_36,“contents”,新的SimpleAnalyzer(Version.LUCENE_36));
Query=parser.parse(qu);
查询.setBoost((float)1.5);
TopDocs TopDocs=searcher.search(查询,最大点击次数);
ScoreDoc[]点击次数=topDocs.scoreDocs;
len=长度;
int-docId=0;
文件d;
对于(i=0;i您希望使用a来表示类似的内容。这将允许您使用优化的搜索约束和原始搜索约束

例如:

    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);

我不明白getOrigSearch()和MakeRefineration()方法是否可以搜索字符串数组而不是简单的字符串。根据你的问题,这些方法只是伪代码。你的QueryParser和Analyzer应该可以很好地处理字符串数组的搜索。