### Question:
IndexUtils { public static List<String> keywords( String source ) { List<String> keywords = new ArrayList<String>(); TokenStream ts = null; try { ts = analyzer.tokenStream( "keywords", new StringReader( source ) ); ts.reset(); while ( ts.incrementToken() ) { keywords.add( ts.getAttribute( CharTermAttribute.class ).toString() ); } ts.end(); } catch ( IOException e ) { logger.error( "Error getting keywords ", e ); } finally { try { ts.close(); } catch (IOException ignored) {} } return keywords; }  static Map<String, List<Object>> getKeyValues( String path, Object obj, boolean fulltextIndex ); static List<Map.Entry<String, Object>> getKeyValueList( String path, Object obj, boolean fulltextIndex ); static List<Entry<String, Object>> getKeyValueList( Object obj, boolean fulltextIndex ); static List<String> keywords( String source );  }### Answer:
@Test public void testKeywords() { String test = "Dragons, the policeman knew, were supposed to breathe fire and occasionally get themselves " + "slaughtered."; List<String> keywords = IndexUtils.keywords( test ); assertEquals( 11, keywords.size() ); for ( String keyword : keywords ) { logger.info( keyword ); } }