X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/ff5c57529bf08959391331418c4a6f24880985c9..312648dd34774701028763c4e01053f501bb5177:/src/gr/ebs/gss/server/ejb/ExternalAPIBean.java diff --git a/src/gr/ebs/gss/server/ejb/ExternalAPIBean.java b/src/gr/ebs/gss/server/ejb/ExternalAPIBean.java index ca7db0d..20da756 100644 --- a/src/gr/ebs/gss/server/ejb/ExternalAPIBean.java +++ b/src/gr/ebs/gss/server/ejb/ExternalAPIBean.java @@ -1811,7 +1811,7 @@ public class ExternalAPIBean implements ExternalAPI, ExternalAPIRemote { List result = new ArrayList(); try { CommonsHttpSolrServer solr = new CommonsHttpSolrServer(getConfiguration().getString("solr.url")); - SolrQuery solrQuery = new SolrQuery(query); + SolrQuery solrQuery = new SolrQuery(escapeCharacters(normalizeSearchQuery(query))); QueryResponse response = solr.query(solrQuery); SolrDocumentList results = response.getResults(); User user = getUser(userId); @@ -2087,6 +2087,24 @@ public class ExternalAPIBean implements ExternalAPI, ExternalAPIRemote { } @Override + public void refreshSolrIndex() { + try { + CommonsHttpSolrServer solr = new CommonsHttpSolrServer(getConfiguration().getString("solr.url")); + + List fileIds = dao.getAllFileIds(); + for (Long id : fileIds) { + postFileToSolr(id); + } + solr.optimize(); + solr.commit(); + } catch (IOException e) { + throw new EJBException(e); + } catch (SolrServerException e) { + throw new EJBException(e); + } + } + + @Override public FileHeaderDTO createFile(Long userId, Long folderId, String name, String mimeType, long fileSize, String filePath) throws DuplicateNameException, ObjectNotFoundException, GSSIOException, InsufficientPermissionsException, QuotaExceededException { @@ -2631,4 +2649,16 @@ public class ExternalAPIBean implements ExternalAPI, ExternalAPIRemote { result.append(filename); return result.toString(); } + + private String normalizeSearchQuery(String query) { + if (query.contains("*")) + return query.toLowerCase().replace('ά', 'α').replace('έ', 'ε').replace('ί', 'ι').replace('ή', 'η').replace('ύ', 'υ') + .replace('ό', 'ο').replace('ς', 'σ').replace('ώ', 'ω').replace('ϊ', 'ι').replace('ϋ', 'υ'); + else + return query; + } + + private String escapeCharacters(String text) { + return text.replaceAll(":", "\\\\:"); + } }