From 0ed3beb875b46caaf9a8ce1d629f9c2c7185bc7f Mon Sep 17 00:00:00 2001 From: john Date: Tue, 26 Nov 2002 18:31:52 +0000 Subject: [PATCH] making search more comprehensible by associating the (potentially weird or potentially fairly intuitive) indexing logic for each piece of entity data with the (correspondingly weird or intuitive) logic for searching and result displaying. also probably useful in future configuration schemes..... --- source/mircoders/search/AudioSearchTerm.java | 80 ++++++++++++++++++ source/mircoders/search/ImagesSearchTerm.java | 102 +++++++++++++++++++++++ source/mircoders/search/KeywordSearchTerm.java | 73 ++++++++++++++++ source/mircoders/search/SearchTerm.java | 73 ++++++++++++++++ source/mircoders/search/TextSearchTerm.java | 73 ++++++++++++++++ source/mircoders/search/UnIndexedSearchTerm.java | 70 ++++++++++++++++ source/mircoders/search/UnStoredSearchTerm.java | 72 ++++++++++++++++ source/mircoders/search/VideoSearchTerm.java | 80 ++++++++++++++++++ 8 files changed, 623 insertions(+) create mode 100755 source/mircoders/search/AudioSearchTerm.java create mode 100755 source/mircoders/search/ImagesSearchTerm.java create mode 100755 source/mircoders/search/KeywordSearchTerm.java create mode 100755 source/mircoders/search/SearchTerm.java create mode 100755 source/mircoders/search/TextSearchTerm.java create mode 100755 source/mircoders/search/UnIndexedSearchTerm.java create mode 100755 source/mircoders/search/UnStoredSearchTerm.java create mode 100755 source/mircoders/search/VideoSearchTerm.java diff --git a/source/mircoders/search/AudioSearchTerm.java b/source/mircoders/search/AudioSearchTerm.java new file mode 100755 index 00000000..5597c496 --- /dev/null +++ b/source/mircoders/search/AudioSearchTerm.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * 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 the com.oreilly.servlet library, 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 javax.servlet.*; +import javax.servlet.http.*; + +import mir.entity.*; +import mir.storage.*; +import mircoders.entity.*; +import mircoders.storage.*; + +import org.apache.lucene.index.*; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; + +import freemarker.template.*; + + +public class AudioSearchTerm extends SearchTerm{ + + + public static String matchField = "hasAudio"; + public static String paramName = "search_hasAudio"; + public static String templateVariable = "hasAudio"; + + public void index(Document doc, Entity entity) throws StorageObjectException{ + EntityList audio = DatabaseContentToMedia.getInstance().getAudio((EntityContent) entity); + if (audio != null && audio.size()>0){ + doc.add(Field.Keyword(matchField,"y")); + } + } + + public String makeTerm(HttpServletRequest req){ + String wanted = req.getParameter(paramName); + if (wanted == "y"){ + return matchField + ":" + "\"" + wanted + "\""; + } + else { + return null; + } + } + + public void returnMeta(SimpleHash result,Document doc){ + result.put(templateVariable,doc.get(matchField)); + } + + +} + + diff --git a/source/mircoders/search/ImagesSearchTerm.java b/source/mircoders/search/ImagesSearchTerm.java new file mode 100755 index 00000000..2f5b4c6e --- /dev/null +++ b/source/mircoders/search/ImagesSearchTerm.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * 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 the com.oreilly.servlet library, 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.*; + +import javax.servlet.*; +import javax.servlet.http.*; + +import mir.entity.*; +import mir.storage.*; +import mircoders.entity.*; +import mircoders.storage.*; + +import org.apache.lucene.index.*; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; + +import freemarker.template.*; + + +public class ImagesSearchTerm extends SearchTerm{ + + + public static String matchField = "hasImages"; + public static String paramName = "search_hasImages"; + public static String dataField = "images"; + public static String templateVariable = "images"; + + public void index(Document doc, Entity entity) throws StorageObjectException{ + EntityList images = DatabaseContentToMedia.getInstance().getImages((EntityContent) entity); + if (images != null && images.size()>0){ + doc.add(Field.Keyword(matchField,"y")); + String imageURLString = ""; + for(int k=0;k0){ + doc.add(Field.Keyword(matchField,"y")); + } + } + + public String makeTerm(HttpServletRequest req){ + String wanted = req.getParameter(paramName); + if (wanted == "y"){ + return matchField + ":" + "\"" + wanted + "\""; + } + else { + return null; + } + } + + public void returnMeta(SimpleHash result,Document doc){ + result.put(templateVariable,doc.get(matchField)); + } + + +} + + -- 2.11.0