Lucene用topdocs搜索和排名

时间:2018-05-09 14:09:59

标签: java lucene

我已经设法使用Lucene提供的一些Java代码创建索引,并成功索引了9个XML文件。我现在必须修改另一个提供的Java文件来搜索索引。我能够输出命中数,但我需要进一步修改输出,这样当你提交查询时,它会按以下格式输出前十个结果: -

&#xA;&#xA; < pre> 排名:0。文件名:.xml FilePath:c:/folder/movie.xml得分:0.5&#xA; &#xA;&#xA;

I我试图创建一个for循环,但我尝试过的例子似乎都没有用。这是我与Java和Lucene的第一次合作,所以任何帮助将不胜感激。

&#xA;&#xA;
 公共类LuceneSearch {&#xA;&#xA; public int n = 0;&#xA; // String fileName;&#xA; / * searchIndex是启动搜索索引所涉及的方法&#xA;通过标准分析器迭代并使用Hits获取结果* /& #xA; public static void searchIndex(String searchString)抛出IOException,ParseException {&#xA; String fieldContents =“summary”; //要搜索的当前字段名称。每个文本项字段名称='内容'&#xA; String fileName =“filename”;&#xA; String filePath =“filepath”;&#xA;&#xA;目录目录= FSDirectory.getDirectory(“/ Users / Jac / Documents / index /”);&#xA; //获取索引位置&#xA; //启动读者和搜索者课程&#xA; IndexReader indexReader = IndexReader.open(directory);&#xA; IndexSearcher indexSearcher = new IndexSearcher(indexReader);&#xA; //启动standardanalyzer&#xA; Analyzer analyzer = new StandardAnalyzer();&#xA; //使用queryparser&#xA;解析查询内容字段QueryParser queryParser = new QueryParser(fieldContents,analyzer);&#xA; //获取用户查询字符串&#xA;查询查询= queryParser.parse(searchString.toLowerCase());&#xA; //启动HITS类并使用方法&#xA;&#xA; TopDocs hits = indexSearcher.search(query,null,10);&#xA; System.out.println(“Searching for”“+ searchString.toLowerCase()+”'“);&#xA; // Hits hits = indexSearcher.search(query);&#xA; System.out.println(“命中数:”+ hits.totalHits);&#xA;&#xA;&#xA;&#xA; System.out.println(“搜索XML标记元素”“+ searchString。 toLowerCase()+“'”);&#xA; System.out.println(“命中数:”+ hits.totalHits); &#XA; for(ScoreDoc scoreDoc:hits.scoreDocs){&#xA; // Document doc = IndexSearcher.doc(scoreDoc.doc);&#xA; System.out.println(“Ranking:”);&#xA; // System.out.println(doc.get(“fullpath”));&#xA; &#xA;&#xA;&#xA; System.out.println(“***搜索完整***”);&#xA;&#xA; }&#XA;&#XA; public static void main(String [] args)抛出异常{&#xA;  
&#xA;

0 个答案:

没有答案