From 60b6a064d662b992ef3c55487bb7f1e8542d5b19 Mon Sep 17 00:00:00 2001 From: zapata Date: Sat, 10 Jan 2004 00:58:14 +0000 Subject: [PATCH] bugfix for search --- source/mircoders/search/AudioSearchTerm.java | 21 ++++----- source/mircoders/search/ContentSearchTerm.java | 16 ++++--- source/mircoders/search/ImagesSearchTerm.java | 34 ++++++-------- source/mircoders/search/IndexUtil.java | 53 +++++++--------------- source/mircoders/search/MediaSearchTerm.java | 23 ++++------ source/mircoders/search/SearchTerm.java | 30 ++++++------ source/mircoders/search/TextSearchTerm.java | 2 - source/mircoders/search/TopicMatrixSearchTerm.java | 22 ++++----- source/mircoders/search/TopicSearchTerm.java | 20 ++++---- source/mircoders/search/UnIndexedSearchTerm.java | 18 +++----- source/mircoders/search/UnStoredSearchTerm.java | 17 +++---- source/mircoders/search/VideoSearchTerm.java | 6 +-- 12 files changed, 106 insertions(+), 156 deletions(-) diff --git a/source/mircoders/search/AudioSearchTerm.java b/source/mircoders/search/AudioSearchTerm.java index f43e12a4..95d83d38 100755 --- a/source/mircoders/search/AudioSearchTerm.java +++ b/source/mircoders/search/AudioSearchTerm.java @@ -18,13 +18,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ @@ -44,11 +44,8 @@ import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; public class AudioSearchTerm extends SearchTerm{ - - static { - matchField = "hasAudio"; - paramName = "search_hasAudio"; - templateVariable = "hasAudio"; + public AudioSearchTerm() { + super(null, "search_hasAudio", "hasAudio", null, "hasAudio"); } public void index(Document doc, Entity entity) throws StorageObjectFailure{ diff --git a/source/mircoders/search/ContentSearchTerm.java b/source/mircoders/search/ContentSearchTerm.java index d349c245..636d1eca 100755 --- a/source/mircoders/search/ContentSearchTerm.java +++ b/source/mircoders/search/ContentSearchTerm.java @@ -18,13 +18,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ @@ -42,6 +42,8 @@ import org.apache.lucene.document.Field; public class ContentSearchTerm extends SearchTerm{ + protected ContentSearchTerm() { + } public ContentSearchTerm(String anEntityPart,String aParamName,String aMatchField,String aDataField, String aTemplateVariable){ partOfEntity = anEntityPart; diff --git a/source/mircoders/search/ImagesSearchTerm.java b/source/mircoders/search/ImagesSearchTerm.java index 0a411d7c..4039373d 100755 --- a/source/mircoders/search/ImagesSearchTerm.java +++ b/source/mircoders/search/ImagesSearchTerm.java @@ -18,23 +18,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ package mircoders.search; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.StringTokenizer; -import java.util.Vector; - import javax.servlet.http.HttpServletRequest; import mir.entity.Entity; @@ -42,20 +41,15 @@ import mir.entity.EntityList; import mir.storage.StorageObjectFailure; import mircoders.entity.EntityContent; import mircoders.storage.DatabaseContentToMedia; - import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; public class ImagesSearchTerm extends SearchTerm{ - - static { - matchField = "hasImages"; - paramName = "search_hasImages"; - dataField = "images"; - templateVariable = "images"; + public ImagesSearchTerm() { + super (null, "search_hasImages", "hasImages", "images", "images"); } - + public void index(Document doc, Entity entity) throws StorageObjectFailure{ EntityList images = DatabaseContentToMedia.getInstance().getImages((EntityContent) entity); if (images != null && images.size()>0){ @@ -69,8 +63,6 @@ public class ImagesSearchTerm extends SearchTerm{ } doc.add(Field.UnIndexed("images",imageURLString)); } - - } public String makeTerm(HttpServletRequest req){ @@ -85,15 +77,15 @@ public class ImagesSearchTerm extends SearchTerm{ public void returnMeta(Map result,Document doc){ String imageURLString=doc.get(dataField); + List theImages = new ArrayList(); if (imageURLString != null){ - List theImages = new Vector(); StringTokenizer st = new StringTokenizer(imageURLString,":"); while (st.hasMoreTokens()) { String imageURL=st.nextToken(); theImages.add(imageURL); } - result.put(templateVariable,theImages); } + result.put(templateVariable,theImages); } diff --git a/source/mircoders/search/IndexUtil.java b/source/mircoders/search/IndexUtil.java index 90d52c0d..68194bc2 100755 --- a/source/mircoders/search/IndexUtil.java +++ b/source/mircoders/search/IndexUtil.java @@ -18,13 +18,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ @@ -32,35 +32,16 @@ package mircoders.search; import java.io.IOException; -import mircoders.entity.EntityContent; - import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; import org.apache.lucene.store.FSDirectory; - +import mircoders.entity.EntityContent; public class IndexUtil { - public static void unindexEntity (EntityContent entity,String index) throws IOException{ - IndexReader indexReader = null; - try{ - indexReader = IndexReader.open(index); - indexReader.delete(new Term("id",entity.getValue("id"))); - indexReader.close(); - } - catch(Exception e){ - if (indexReader != null){ - indexReader.close(); - } - } - finally { - if (indexReader != null){ - FSDirectory theIndexDir=FSDirectory.getDirectory(index,false); - if (IndexReader.isLocked(theIndexDir)){ - IndexReader.unlock(theIndexDir); - } - } - } + public static void unindexEntity (EntityContent anEntity, String anIndex) throws IOException{ + unindexID(anEntity.getId(), anIndex); } + public static void unindexID (String id,String index) throws IOException{ IndexReader indexReader = null; try{ @@ -70,15 +51,15 @@ public class IndexUtil { } catch(Exception e){ if (indexReader != null){ - indexReader.close(); + indexReader.close(); } } - finally { + finally { if (indexReader != null){ - FSDirectory theIndexDir=FSDirectory.getDirectory(index,false); - if (IndexReader.isLocked(theIndexDir)){ - IndexReader.unlock(theIndexDir); - } + FSDirectory theIndexDir=FSDirectory.getDirectory(index,false); + if (IndexReader.isLocked(theIndexDir)){ + IndexReader.unlock(theIndexDir); + } } } } diff --git a/source/mircoders/search/MediaSearchTerm.java b/source/mircoders/search/MediaSearchTerm.java index 087c725c..7d16cd20 100755 --- a/source/mircoders/search/MediaSearchTerm.java +++ b/source/mircoders/search/MediaSearchTerm.java @@ -18,13 +18,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ @@ -41,15 +41,12 @@ import org.apache.lucene.document.Document; public class MediaSearchTerm extends SearchTerm{ - - static { - matchField = ""; - paramName = "search_hasMedia"; - templateVariable = ""; + public MediaSearchTerm() { + super(null, "search_hasMedia", "", null, ""); } public void index(Document doc, Entity entity) throws StorageObjectFailure{ - // only use this term for doing alternate queries on media + // only use this term for doing alternate queries on media return; } diff --git a/source/mircoders/search/SearchTerm.java b/source/mircoders/search/SearchTerm.java index ed79f14c..6ed50799 100755 --- a/source/mircoders/search/SearchTerm.java +++ b/source/mircoders/search/SearchTerm.java @@ -18,36 +18,32 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ package mircoders.search; import java.util.Map; - import javax.servlet.http.HttpServletRequest; - import mir.entity.Entity; - import org.apache.lucene.document.Document; abstract public class SearchTerm { + protected String partOfEntity; + protected String paramName; + protected String matchField; + protected String dataField; + protected String templateVariable; - public static String partOfEntity; - public static String paramName; - public static String matchField; - public static String dataField; - public static String templateVariable; - - public SearchTerm(String anEntityPart,String aParamName,String aMatchField,String aDataField, String aTemplateVariable){ + public SearchTerm(String anEntityPart, String aParamName, String aMatchField, String aDataField, String aTemplateVariable){ //for more reusable SearchTerm types partOfEntity = anEntityPart; paramName = aParamName; diff --git a/source/mircoders/search/TextSearchTerm.java b/source/mircoders/search/TextSearchTerm.java index bb8b116d..9f4e4332 100755 --- a/source/mircoders/search/TextSearchTerm.java +++ b/source/mircoders/search/TextSearchTerm.java @@ -41,8 +41,6 @@ import org.apache.lucene.document.Field; public class TextSearchTerm extends SearchTerm{ - - public TextSearchTerm(String anEntityPart,String aParamName,String aMatchField,String aDataField, String aTemplateVariable){ partOfEntity = anEntityPart; paramName = aParamName; diff --git a/source/mircoders/search/TopicMatrixSearchTerm.java b/source/mircoders/search/TopicMatrixSearchTerm.java index acc99fb7..f02d9e4f 100755 --- a/source/mircoders/search/TopicMatrixSearchTerm.java +++ b/source/mircoders/search/TopicMatrixSearchTerm.java @@ -18,13 +18,13 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with any library licensed under the Apache Software License, - * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library - * (or with modified versions of the above that use the same license as the above), - * and distribute linked combinations including the two. You must obey the - * GNU General Public License in all respects for all of the code used other than - * the above mentioned libraries. If you modify this file, you may extend this - * exception to your version of the file, but you are not obligated to do so. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. * If you do not wish to do so, delete this exception statement from your version. */ package mircoders.search; @@ -44,10 +44,8 @@ import org.apache.lucene.document.Field; public class TopicMatrixSearchTerm extends SearchTerm{ - - static { - matchField = "topic"; - paramName = "search_topicmatrix"; + public TopicMatrixSearchTerm() { + super(null, "search_topicmatrix", "topic", null, null); } public void index(Document doc, Entity entity) throws StorageObjectFailure{ @@ -63,7 +61,7 @@ public class TopicMatrixSearchTerm extends SearchTerm{ String queryTerm = ""; for (int x=0;x<10;x++){ String[] values = req.getParameterValues("search_topicmatrix_"+Integer.toString(x)); - + if (values != null && values.length > 0){ String subqueryTerm = "("; for (int i=0;i