1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.searchstats.service;
35
36 import fr.paris.lutece.plugins.searchstats.business.QueryRecord;
37 import fr.paris.lutece.portal.service.util.AppLogService;
38
39 import java.util.ArrayList;
40 import java.util.Collections;
41 import java.util.HashMap;
42 import java.util.List;
43 import java.util.StringTokenizer;
44
45
46
47
48 public class TermRecordService
49 {
50
51 public static List<TermRecord> getTopTerms( List<QueryRecord> listQueries )
52 {
53 HashMap<String, TermRecord> mapTerms = new HashMap<String, TermRecord>();
54
55 String strTerms = "";
56 for ( QueryRecord query : listQueries )
57 {
58 try
59 {
60 strTerms = query.getQuery();
61 StringTokenizer st = new StringTokenizer( strTerms, " " );
62
63 while ( st.hasMoreTokens() )
64 {
65 String strTerm = st.nextToken();
66
67 if ( mapTerms.containsKey( strTerm ) )
68 {
69 TermRecord t = mapTerms.get( strTerm );
70 t.setCount( t.getCount() + 1 );
71 }
72 else
73 {
74 TermRecordns/searchstats/service/TermRecord.html#TermRecord">TermRecord t = new TermRecord();
75 t.setTerm( strTerm );
76 t.setCount( 1 );
77 mapTerms.put( strTerm, t );
78 }
79 }
80 }
81 catch ( Exception e )
82 {
83 AppLogService.error( "Searchstats - getTopTerms error on Terms : " + strTerms + " : " + e.getMessage(), e.getCause() );
84 }
85 }
86
87 List listTerms = new ArrayList<TermRecord>( mapTerms.values() );
88 Collections.sort( listTerms, new TermRecordComparator() );
89
90 return listTerms;
91 }
92 }