2011-11-02 7 views
0

Я запускаю программу в Lucene. Я получаю общее количество обращений за каждое слово. Это означает, что он получает все файлы, содержащие слово, которое я ищу.Общее количество просмотров lucene

Пример:

Searching for 'Amazon' 
Number of hits: 2 
Hit: Files\peru.txt 
Hit: Files\correspondent.txt 
Searching for 'business' 
Number of hits: 5 
Hit: Files\innovation.txt 
Hit: Files\xmas.txt 
Hit: Files\bp.txt 
Hit: Files\symbian.txt 
Hit: Files\peru.txt 
Searching for 'environment' 
Number of hits: 3 
Hit: Files\food.txt 
Hit: Files\sarkozy.txt 
Hit: Files\symbian.txt 

Мой первый вопрос заключается в том, чтобы добавить общее число обращений за весь запрос (2 + 5 + 3) и отображать их них.

Мой второй вопрос - как отобразить результаты на заказ? от 2, затем 3, затем 5

Любые предложения были бы благодарны!

Код для поиска в индексе и выше выход:

public static void searchIndex(String searchString) throws IOException, ParseException { 
     int counter = 0 ; 



     System.out.println("Searching for '" + searchString + "'"); 
     Directory directory = FSDirectory.getDirectory(INDEX_DIRECTORY); 
     IndexReader indexReader = IndexReader.open(directory); 
     IndexSearcher indexSearcher = new IndexSearcher(indexReader); 

     Analyzer analyzer = new StandardAnalyzer(); 
     QueryParser queryParser = new QueryParser(FIELD_CONTENTS, analyzer); 
     Query query = queryParser.parse(searchString); 
     Hits hits = indexSearcher.search(query); 
     System.out.println("Number of hits: " + hits.length()); 



     Iterator<Hit> it = hits.iterator(); 
     while (it.hasNext()) { 
      Hit hit = it.next(); 
      Document document = hit.getDocument(); 
      String path = document.get(path1); 
      System.out.println("Hit: " + path); 
     } 

    } 
} 

С уважением.

ответ

1

Используйте Searcher.search, чтобы получить TopDocs для каждого ключевого слова, затем суммируйте/сортируйте по члену TopDocs.totalHits.

Второй параметр, равный search, не имеет значения, хотите ли вы просто статистику. Если вы хотите найти все образы, установите его в число документов в вашем индексе, так как это тривиальная верхняя граница количества обращений.

+0

Я отредактировал мое сообщение и добавил код. не могли бы вы рассказать мне, как я могу это уточнить с моим требованием? – HShbib

+0

@HumamShbib: похоже, вы используете API Lucene 2.x. 'TopDocs.totalHits' был' Hits.length() 'в этом API. Предполагаю, вы знаете, как суммировать или сортировать список? –

+0

Я понятия не имею, что я пробовал использовать счетчик, который ничего не делал. Не могли бы вы рассказать мне, как суммировать хиты из Hits.length каждого документа? и сортировать общее количество в режиме Acsending. – HShbib

Смежные вопросы