2

I am able to insert record and able index them but i am facing an exception while searching

org.hibernate.search.bridge.BridgeException: Exception while calling bridge#objectToString class: com.edoors.formBean.Hib_cons_Cv path: cons_cv

I am able search on all coulmn of table except blob column


Field Bridge

public class ByteArrayBridge implements TwoWayStringBridge  {    
    public String objectToString(Object object) {        
        byte[] data = (byte[]) object;        
        StringWriter writer = new StringWriter();        
        InputStream is = null;        
        try {            
            is = new ByteArrayInputStream(data);            
            new AutoDetectParser().parse(is,new WriteOutContentHandler(writer),new Metadata(),new             
            ParseContext());              
            return is.toString();            
        }  catch (Exception e) {            
            System.out.println("Exception  "+e);
            }             
            return writer.toString();
        }

        public Object stringToObject(String string) {            
            byte[] data=string.getBytes();            
            Object obj=data;          
            return obj;

        }
    }

DAO Class ::

public List searchConsultantByTitle(String jobtitle)
{
    List list=null;        
    Session session = hiberUtil.openSession();   
    Transaction tx = null;    
    try{        
        tx = session.beginTransaction();        
        FullTextSession fullTextSession = Search.getFullTextSession(session);               
        QueryBuilder queryBuilder =         
        fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Hib_cons_Cv.class).get();        

        org.apache.lucene.search.Query luceneQuery = null;        
        luceneQuery =         
        queryBuilder.keyword().fuzzy().withThreshold(0.7f).onField("cons_cv").matching(jobtitle).createQuery();

        FullTextQuery hibernateQuery = fullTextSession.createFullTextQuery(luceneQuery, Hib_cons_Cv.class);        
        int resultSize = hibernateQuery.getResultSize();        
        System.out.println(".....resultSize..............................."+resultSize);        
    }
    catch(Exception e)    
    {
        System.out.println(e.getMessage());
    }
}

POJO Class

@Entity
@AnalyzerDef(name = "customanalyzer", tokenizer = @TokenizerDef(factory = 
KeywordTokenizerFactory.class), filters = {   
    @TokenFilterDef(factory = LowerCaseFilterFactory.class),
    @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { 
    @Parameter(name = "language", value = "English") }) })
    @Indexed
    public class Hib_cons_Cv {        
        @Column(name = "cons_cv", unique = false, nullable = false, length = 59296)     
        @Lob        
        @Field(analyze = Analyze.NO, store = Store.YES)        
        @FieldBridge(impl = ByteArrayBridge.class)       
        private Blob cons_cv;        
        //setters and getters
    }
olyanren
  • 1,448
  • 4
  • 24
  • 42
G SriHAri
  • 706
  • 2
  • 9
  • 27
  • Maybe you could format your code a but better to start with. Really hard to follow anything. Also please add the full stack trace. – Hardy Jun 20 '14 at 08:04

1 Answers1

0

I also got this error (with no stack trace). Turned out i put in the wrong field name. It was actually using a field with no bridging.

fatdunky
  • 71
  • 1
  • 4