source: trunk/java-client/org/nzdl/gsdl/service/NzdlQuery.java@ 2253

Last change on this file since 2253 was 2253, checked in by daven, 23 years ago

added boolean version of setCaseFolding method

  • Property svn:keywords set to Author Date Id Revision
File size: 7.8 KB
RevLine 
[2107]1/*
2 * NzdlQuery.java
3 * Copyright (C) 2001 New Zealand Digital Library Project
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
[2055]19
[2107]20//the package we're in
[2098]21package org.nzdl.gsdl.service;
[2055]22
[2159]23import java.util.HashMap;
24import java.util.Map;
25import java.util.Set;
26import java.util.Collection;
27
[2098]28import org.nzdl.gsdl.util.NzdlConstants;
[2055]29
[2107]30/**
31 * NzdlQuery is an object that holds the options for a query and is
32 * easily configured by the user.
33 *
34 * @author Stuart Yeates ([email protected])
35 * @author Aziz Mahoui ([email protected])
36 * @author Gordon Paynter ([email protected])
[2163]37 * @author Brett Sheeran ([email protected]) (comments)
[2107]38 * @version $Revision: 2253 $
39 */
40
[2055]41public class NzdlQuery extends java.lang.Object {
42
[2107]43
[2055]44 private Map m_Options = null;
45
[2107]46 /**
47 * Creates an instance of NzdlQuery with an empty query string.
[2108]48 * This can then be used as a constructor parameter when creating a
49 * {@link NzdlRequest NzdlRequest} object for servicing by a
50 * {@link NzdlService NzdlService} object.
51 * Default values for a NzdlQuery object are: maxDocs 200, startResults= 1,
52 * endResults= 10, queryType= "ranked", caseFolding= true, stemming= false,
53 * queryTerm= "".
[2107]54 */
[2055]55 public NzdlQuery() {
56 m_Options = new HashMap();
57 setQueryTerm ( NzdlConstants.DEFAULT_QUERY_TERM );
58 setQueryType ( NzdlConstants.DEFAULT_QUERY_TYPE );
59 setCaseFolding ( NzdlConstants.DEFAULT_CASE_FOLDING );
60 setStemming ( NzdlConstants.DEFAULT_STEMMING );
61 setStartResults( NzdlConstants.DEFAULT_START_RESULTS );
62 setEndResults ( NzdlConstants.DEFAULT_END_RESULTS );
63 setMaxDocs ( NzdlConstants.DEFAULT_MAX_DOCS );
64 }
65
[2107]66 /**
67 * Creates an instance of NzdlQuery with a value for query string. Has the
68 * same default values as NzdlQuery(), with the exception of term which is
69 * loaded into the query string field.
70 * @param term the query string
71 */
[2055]72 public NzdlQuery( String _term ) {
73 m_Options = new HashMap();
74 setQueryTerm ( _term );
75 setQueryType ( NzdlConstants.DEFAULT_QUERY_TYPE );
76 setCaseFolding ( NzdlConstants.DEFAULT_CASE_FOLDING );
77 setStemming ( NzdlConstants.DEFAULT_STEMMING );
78 setStartResults( NzdlConstants.DEFAULT_START_RESULTS );
79 setEndResults ( NzdlConstants.DEFAULT_END_RESULTS );
80 setMaxDocs ( NzdlConstants.DEFAULT_MAX_DOCS );
81 }
82
[2107]83 /**
84 * Sets the expression to be queried. Note: this can also be done using the
85 * constructor.
86 * @param term the query expression string
87 */
[2055]88 public void setQueryTerm(String _term) {
89 m_Options.put("Term", _term);
90 }
91
[2107]92 /**
93 * Sets the query type as either "ranked" or "boolean". "ranked"
94 * orders results by suitability. "boolean" allows use of operators such as
95 * !, &, |. Default is "ranked"
96 * @param type "ranked" or "boolean"
97 */
[2055]98 public void setQueryType(String _type) {
99 m_Options.put("QueryType", _type);
100 }
101
[2107]102 /**
103 * Sets query to ignore case. Default is true.
104 * @param case if false then sets query to be case sensitive. If true
105 * then sets query to be case insenstive.
106 */
[2055]107 public void setCaseFolding(String _case) {
108 m_Options.put("CaseFold", _case);
109 }
110
[2107]111 /**
[2253]112 * Sets query to ignore case. Default is true.
113 * @param case if false then sets query to be case sensitive. If true
114 * then sets query to be case insenstive.
115 */
116
117 public void setCaseFolding(boolean _case) {
118 if (_case == false)
119 m_Options.put("CaseFold", "false");
120 else
121 m_Options.put("CaseFold", "true");
122 }
123
124 /**
[2108]125 * Sets query to ignore word endings. Default is "false."
126 * @param stem if "true", sets query to strip endings such as "...ing",
127 * "...ed". If "false", sets query to only match whole words.
[2107]128 */
[2055]129 public void setStemming(String _stem) {
130 m_Options.put("Stem", _stem);
131 }
132
[2107]133 /**
134 * Sets the maximum number of documents that can be found by a query.
135 * Default is 200.
136 * @param max The maximum permitted number of documents to be found
137 * by the query
138 */
139 public void setMaxDocs(int _max) {
140 m_Options.put("Maxdocs", new Integer(_max));
141 }
142
143 /**
144 * Sets the start number of the result set. The result set is a subset
145 * of the maximum number of documents that will be found by the query.
146 * Default is 1.
147 * @param start the number of the first document, relative to the found
148 * documents
149 */
[2055]150 public void setStartResults(int _start) {
151 m_Options.put("StartResults", new Integer(_start));
152 }
153
[2107]154 /**
155 * Sets the end number of the result set. The result set is a subset of the
156 * maximum number documents that could be found by that query.
157 * Default is 10.
158 * @param end the number of the last document relative to the found
159 * documents
160 */
[2055]161 public void setEndResults(int _end) {
162 m_Options.put("EndResults", new Integer(_end));
163 }
164
[2107]165 /**
166 * Returns whether query is "ranked" or "boolean". "ranked" orders results by
167 * suitability. "boolean" allows use of operators such as !, &, |. Default is
168 * "ranked"
169 * @return Either "ranked" or "boolean"
170 */
[2055]171 public String getQueryType() {
172 return (String)m_Options.get("QueryType");
173 }
174
[2107]175 /**
176 * Returns the query string expression.
177 * @return the query string
178 */
[2055]179 public String getQueryTerm() {
180 return (String)m_Options.get("Term");
181 }
182
[2107]183 /**
184 * Returns "true" if query is case insenstive. Default is "true"
185 * @return "true" if query is case insenstive, "false" if the query is case
186 * senstive.
187 */
[2055]188 public String getCaseFolding() {
189 return (String)m_Options.get("CaseFold");
190 }
191
[2107]192 /**
193 * Returns "true" if query ignores word endings. Default is "false".
194 * @return "true" if query strips endings such as "...ing" or "...ed" , false
195 * if query only matches whole words.
196 */
[2055]197 public String getStemming() {
198 return (String)m_Options.get("Stem");
199 }
200
[2107]201 /**
202 * Returns the current setting for the maximum number of documents that
203 * may be found by a query. Default is 200.
204 * @return The maximum number of documents to be found
205 */
206 public int getMaxDocs() {
207 return ((Integer) m_Options.get("Maxdocs")).intValue();
208 }
209
210 /**
211 * Returns the start number of the result set. The result set is a subset of
212 * the maximum number of documents that could be found by the query.
213 * Default is 1.
214 * @return The number of the first document relative to the documents that
215 * were found to match the query
216 */
[2055]217 public int getStartResults() {
218 return ((Integer) m_Options.get("StartResults")).intValue();
219 }
220
[2107]221 /**
222 * Returns the end number of the result set. The result set is a subset of
223 * the maximum number documents that could be found by the query.
224 * Default is 10.
225 * @return The number of the last document relative to the documents that
226 * were found to match the query.
227 */
[2055]228 public int getEndResults() {
229 return ((Integer) m_Options.get("EndResults")).intValue();
230 }
231
[2107]232 /**
233 * Returns the set of query terms.
234 * @return This set: "EndResults", "QueryType", "Term", "MaxDocs",
235 * "StartResults", "Stem", "CaseFold"
236 */
[2055]237 public Set queryKeySet() {
238 return m_Options.keySet();
239 }
240
[2107]241 /**
242 * Returns a collection of the current query values.
243 * @return For a default query this collection: 10, "ranked", "", 200, 1
244 * , false, true
245 */
[2055]246 public Collection queryValues() {
247 return m_Options.values();
248 }
249
250}
[2107]251
Note: See TracBrowser for help on using the repository browser.