Friday, 15 April 2011

java - Is it alright to instantiate Similarity each time when using PerFieldSimilarityWrapper with Lucene -



java - Is it alright to instantiate Similarity each time when using PerFieldSimilarityWrapper with Lucene -

i initialize discogssimilarity 1 time when start creating index, because perfieldsimilaritywrapper mean code below instantiates new similarity class each field indexed, , if wrong ?

public class discogssimilarity extends perfieldsimilaritywrapper { @override public similarity get(string fieldname) { if(fieldname.equals(releaseindexfield.track)) { homecoming new multiplejoinssimilarity(); } else if(fieldname.equals(releaseindexfield.artist_name)) { homecoming new multiplejoinssimilarity(); } else { homecoming new defaultsimilarity(); } } }

updated solution based on answer

public class discogssimilarity extends perfieldsimilaritywrapper { private multiplejoinssimilarity mjs; private defaultsimilarity ds; public discogssimilarity() { mjs = new multiplejoinssimilarity(); ds = new defaultsimilarity(); } @override public similarity get(string fieldname) { if(fieldname.equals(releaseindexfield.track)) { homecoming mjs; } else if(fieldname.equals(releaseindexfield.artist_name)) { homecoming mjs; } else { homecoming ds; } } }

short reply : yes long answer, have @ code used solr instantiate it's similarity using schema provided :

@override public void init(solrparams args) { super.init(args); similarity = new perfieldsimilaritywrapper() { @override public similarity get(string name) { fieldtype fieldtype = core.getlatestschema().getfieldtypenoex(name); if (fieldtype == null) { homecoming defaultsimilarity; } else { similarity similarity = fieldtype.getsimilarity(); homecoming similarity == null ? defaultsimilarity : similarity; } } }; }

java lucene

No comments:

Post a Comment