001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.search.lucene;
016    
017    import com.liferay.portal.kernel.util.StringPool;
018    
019    import java.io.IOException;
020    
021    import java.util.Date;
022    
023    import org.apache.lucene.analysis.Analyzer;
024    import org.apache.lucene.document.Document;
025    import org.apache.lucene.index.Term;
026    import org.apache.lucene.queryParser.ParseException;
027    import org.apache.lucene.search.BooleanQuery;
028    import org.apache.lucene.search.IndexSearcher;
029    import org.apache.lucene.search.Query;
030    
031    /**
032     * @author Brian Wing Shun Chan
033     * @author Harry Mark
034     * @author Bruno Farache
035     */
036    public class LuceneHelperUtil {
037    
038            public static void addDate(Document doc, String field, Date value) {
039                    doc.add(LuceneFields.getDate(field, value));
040            }
041    
042            public static void addDocument(long companyId, Document document)
043                    throws IOException {
044    
045                    getLuceneHelper().addDocument(companyId, document);
046            }
047    
048            public static void addExactTerm(
049                    BooleanQuery booleanQuery, String field, boolean value) {
050    
051                    addExactTerm(booleanQuery, field, String.valueOf(value));
052            }
053    
054            public static void addExactTerm(
055                    BooleanQuery booleanQuery, String field, double value) {
056    
057                    addExactTerm(booleanQuery, field, String.valueOf(value));
058            }
059    
060            public static void addExactTerm(
061                    BooleanQuery booleanQuery, String field, int value) {
062    
063                    addExactTerm(booleanQuery, field, String.valueOf(value));
064            }
065    
066            public static void addExactTerm(
067                    BooleanQuery booleanQuery, String field, long value) {
068    
069                    addExactTerm(booleanQuery, field, String.valueOf(value));
070            }
071    
072            public static void addExactTerm(
073                    BooleanQuery booleanQuery, String field, short value) {
074    
075                    addExactTerm(booleanQuery, field, String.valueOf(value));
076            }
077    
078            public static void addExactTerm(
079                    BooleanQuery booleanQuery, String field, String value) {
080    
081                    getLuceneHelper().addExactTerm(booleanQuery, field, value);
082            }
083    
084            public static void addRequiredTerm(
085                    BooleanQuery booleanQuery, String field, boolean value) {
086    
087                    addRequiredTerm(booleanQuery, field, String.valueOf(value));
088            }
089    
090            public static void addRequiredTerm(
091                    BooleanQuery booleanQuery, String field, double value) {
092    
093                    addRequiredTerm(booleanQuery, field, String.valueOf(value));
094            }
095    
096            public static void addRequiredTerm(
097                    BooleanQuery booleanQuery, String field, int value) {
098    
099                    addRequiredTerm(booleanQuery, field, String.valueOf(value));
100            }
101    
102            public static void addRequiredTerm(
103                    BooleanQuery booleanQuery, String field, long value) {
104    
105                    addRequiredTerm(booleanQuery, field, String.valueOf(value));
106            }
107    
108            public static void addRequiredTerm(
109                    BooleanQuery booleanQuery, String field, short value) {
110    
111                    addRequiredTerm(booleanQuery, field, String.valueOf(value));
112            }
113    
114            public static void addRequiredTerm(
115                    BooleanQuery booleanQuery, String field, String value) {
116    
117                    addRequiredTerm(booleanQuery, field, value, false);
118            }
119    
120            public static void addRequiredTerm(
121                    BooleanQuery booleanQuery, String field, String value, boolean like) {
122    
123                    getLuceneHelper().addRequiredTerm(booleanQuery, field, value, like);
124            }
125    
126            public static void addTerm(
127                            BooleanQuery booleanQuery, String field, long value)
128                    throws ParseException {
129    
130                    addTerm(booleanQuery, field, String.valueOf(value));
131            }
132    
133            public static void addTerm(
134                            BooleanQuery booleanQuery, String field, String value)
135                    throws ParseException {
136    
137                    addTerm(booleanQuery, field, value, false);
138            }
139    
140            public static void addTerm(
141                            BooleanQuery booleanQuery, String field, String value,
142                            boolean like)
143                    throws ParseException {
144    
145                    getLuceneHelper().addTerm(booleanQuery, field, value, like);
146            }
147    
148            public static void delete(long companyId) {
149                    getLuceneHelper().delete(companyId);
150            }
151    
152            public static void deleteDocuments(long companyId, Term term)
153                    throws IOException {
154    
155                    getLuceneHelper().deleteDocuments(companyId, term);
156            }
157    
158            public static Analyzer getAnalyzer() {
159                    return getLuceneHelper().getAnalyzer();
160            }
161    
162            public static LuceneHelper getLuceneHelper() {
163                    return _luceneHelper;
164            }
165    
166            public static String[] getQueryTerms(Query query) {
167                    return getLuceneHelper().getQueryTerms(query);
168            }
169    
170            public static IndexSearcher getSearcher(long companyId, boolean readOnly)
171                    throws IOException {
172    
173                    return getLuceneHelper().getSearcher(companyId, readOnly);
174            }
175    
176            public static String getSnippet(Query query, String field, String s)
177                    throws IOException {
178    
179                    return getSnippet(
180                            query, field, s, 3, 80, "...", StringPool.BLANK, StringPool.BLANK);
181            }
182    
183            public static String getSnippet(
184                            Query query, String field, String s, int maxNumFragments,
185                            int fragmentLength, String fragmentSuffix, String preTag,
186                            String postTag)
187                    throws IOException {
188    
189                    return getLuceneHelper().getSnippet(
190                            query, field, s, maxNumFragments, fragmentLength, fragmentSuffix,
191                            preTag, postTag);
192            }
193    
194            public static void updateDocument(
195                            long companyId, Term term, Document document)
196                    throws IOException {
197    
198                    getLuceneHelper().updateDocument(companyId, term, document);
199            }
200    
201            public static void shutdown() {
202                    getLuceneHelper().shutdown();
203            }
204    
205            public void setLuceneHelper(LuceneHelper luceneHelper) {
206                    _luceneHelper = luceneHelper;
207            }
208    
209            private static LuceneHelper _luceneHelper;
210    
211    }