private Document buildDoc(EntityBaseBean bean) throws IcatException { Map<Field, Integer> stringFields = ei.getStringFields(bean.getClass()); StringBuilder sb = new StringBuilder(); for (Entry<Field, Integer> item : stringFields.entrySet()) { Field field = item.getKey(); Method getter = ei.getGetters(bean.getClass()).get(field); try { String text = (String) getter.invoke(bean); if (text != null) { if (sb.length() != 0) { sb.append(' '); } sb.append(text); } } catch (IllegalArgumentException e) { throw new IcatException(IcatExceptionType.INTERNAL, e.getMessage()); } catch (IllegalAccessException e) { throw new IcatException(IcatExceptionType.INTERNAL, e.getMessage()); } catch (InvocationTargetException e) { throw new IcatException(IcatExceptionType.INTERNAL, e.getMessage()); } } Document doc = new Document(); String id = bean.getClass().getSimpleName() + ":" + bean.getId(); doc.add(new StringField("id", id, Store.YES)); doc.add(new StringField("entity", bean.getClass().getSimpleName(), Store.NO)); doc.add(new TextField("all", sb.toString(), Store.NO)); logger.debug("Created document '" + sb.toString() + "' to index for " + id); return doc; }