Lucene поиск и рейтинг с TopDocs - PullRequest
0 голосов
/ 09 мая 2018

Мне удалось создать индекс с использованием некоторого поставляемого кода Java с Lucene и успешно проиндексировал 9 файлов XML. Теперь я должен изменить другой предоставленный файл Java для поиска в индексе. Я могу вывести количество совпадений, но мне нужно дополнительно изменить вывод, чтобы при отправке запроса выводились первые десять результатов в следующем формате: -

Ranking: 0. Filename: .xml  FilePath: c:/folder/movie.xml Score: 0.5

Я пытаюсь создать цикл for, но ни один из примеров, которые я пробовал, кажется, не работает. Это мое первое предприятие с Java и Lucene, поэтому любая помощь будет принята с благодарностью.

public class LuceneSearch {

    public int n = 0;
//String fileName;
/*searchIndex is the method involved with initiating Searching the Index 
via the standardanalyzer by iterating through and using Hits for the results*/
    public static void searchIndex(String searchString) throws IOException, ParseException {
        String fieldContents = "summary";//current field name to search for. Each text item field name= 'contents'
      String fileName = "filename";
      String filePath = "filepath";

        Directory directory = FSDirectory.getDirectory("/Users/Jac/Documents/index/");
        //get index location
        //initiate reader and searcher classes
        IndexReader indexReader = IndexReader.open(directory);
        IndexSearcher indexSearcher = new IndexSearcher(indexReader);
        //initiate standardanalyzer
        Analyzer analyzer = new StandardAnalyzer();
        //parse the query contents field with queryparser
        QueryParser queryParser = new QueryParser(fieldContents, analyzer);
        //get user query string
        Query query = queryParser.parse(searchString.toLowerCase());
        //Initiate HITS class and utilise methods

       TopDocs hits = indexSearcher.search(query,null,10);
       System.out.println("Searching for '" + searchString.toLowerCase() + "'");
       //Hits hits = indexSearcher.search(query);
       System.out.println("Number of hits: " + hits.totalHits);



System.out.println("Searching XML Tag Element '" + searchString.toLowerCase() + "'");
  System.out.println("Number of hits: " + hits.totalHits);          
     for(ScoreDoc scoreDoc : hits.scoreDocs) {
   //     Document doc = IndexSearcher.doc(scoreDoc.doc);
            System.out.println("Ranking: ");
  //      System.out.println(doc.get("fullpath"));
    }      


  System.out.println("***Search Complete***");

    }

    public static void main(String[] args) throws Exception {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...