r59 - in trunk/src/main: java/org/chorem/bow webapp
Author: bbrossaud Date: 2010-06-02 17:11:39 +0200 (Wed, 02 Jun 2010) New Revision: 59 Url: http://chorem.org/repositories/revision/bow/59 Log: use facet for the opensearch suggestions Removed: trunk/src/main/java/org/chorem/bow/Model.java trunk/src/main/java/org/chorem/bow/Suggestion.java Modified: trunk/src/main/java/org/chorem/bow/ControllerServlet.java trunk/src/main/java/org/chorem/bow/OpenSearchActions.java trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java trunk/src/main/webapp/openSearchResult.jsp trunk/src/main/webapp/suggestions.jsp Modified: trunk/src/main/java/org/chorem/bow/ControllerServlet.java =================================================================== --- trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-06-02 14:14:19 UTC (rev 58) +++ trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-06-02 15:11:39 UTC (rev 59) @@ -276,12 +276,16 @@ List<String> cpy = new ArrayList<String>(searchLine); cpy.remove(cpy.size() - 1); criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). - eq(Bookmark.FQ_FIELD_TAGS, cpy).criteria(); + eq(Bookmark.FQ_FIELD_TAGS, cpy).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); } else { - criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(); + criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). + criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); } - List<Bookmark> bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + PagedResult result = proxy.findAllByCriteria(Bookmark.class, criteria); + List<Bookmark> bookList = result.getAll(); + List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_TAGS); openSearchActions.setBookmarkList(bookList); + openSearchActions.setSuggestionList(topics); openSearchActions.findSuggestions(searchLine); request.setAttribute("openSearchAction", openSearchActions); } Deleted: trunk/src/main/java/org/chorem/bow/Model.java =================================================================== --- trunk/src/main/java/org/chorem/bow/Model.java 2010-06-02 14:14:19 UTC (rev 58) +++ trunk/src/main/java/org/chorem/bow/Model.java 2010-06-02 15:11:39 UTC (rev 59) @@ -1,53 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package org.chorem.bow; - -import java.util.Properties; -import org.nuiton.wikitty.WikittyExtensionStorage; -import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.WikittyStorage; -import org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC; -import org.nuiton.wikitty.jdbc.WikittyStorageJDBC; -import org.nuiton.wikitty.multistorage.MultiStorageConfiguration; -import org.nuiton.wikitty.multistorage.MultiStorageConfiguration.BasicConfiguration; -import org.nuiton.wikitty.multistorage.WikittyServiceMultiStorage; - -/** - * - * @author bbrossaud - */ -public class Model { - - protected WikittyProxy proxy = null; - - Model() { - System.setProperty("solr.data.dir", System.getProperty("user.home") + "/.bow/solr"); - this.init(); - } - - public void init() { - MultiStorageConfiguration config = new BasicConfiguration(); - Model.configureJDBC(config); - - WikittyService jdbcStorage = new WikittyServiceMultiStorage(config); - proxy = new WikittyProxy(); - proxy.setWikittyService(jdbcStorage); - } - - static void configureJDBC(MultiStorageConfiguration configuration) { - Properties properties = new Properties(); - - WikittyExtensionStorage extensionStorage = new WikittyExtensionStorageJDBC(properties); - WikittyStorage wikittyStorage = new WikittyStorageJDBC(extensionStorage, properties); - - configuration.addExtensionStorage(extensionStorage, true); - configuration.addWikittyStorage(wikittyStorage, true); - } - - public WikittyProxy getProxy() { - return proxy; - } -} Modified: trunk/src/main/java/org/chorem/bow/OpenSearchActions.java =================================================================== --- trunk/src/main/java/org/chorem/bow/OpenSearchActions.java 2010-06-02 14:14:19 UTC (rev 58) +++ trunk/src/main/java/org/chorem/bow/OpenSearchActions.java 2010-06-02 15:11:39 UTC (rev 59) @@ -6,12 +6,11 @@ import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; +import org.nuiton.wikitty.FacetTopic; /** * @@ -20,50 +19,38 @@ public class OpenSearchActions { protected List<Bookmark> bookmarkList = new ArrayList<Bookmark>(); - protected List<Suggestion> suggestions = new ArrayList<Suggestion>(); + protected List<FacetTopic> suggestions = new ArrayList<FacetTopic>(); protected String[] search = null; public void findSuggestions(List<String> searchLine) { int size = searchLine.size(); search = searchLine.toArray(new String[size]); - fieldSuggestionList(search[size - 1], searchLine); - } - - protected void fieldSuggestionList(String word, List<String> searchLine) { - if (bookmarkList != null) { - Map<String, Integer> map = new HashMap<String, Integer>(); - List<Bookmark> save = new ArrayList<Bookmark>(bookmarkList); - for (Bookmark bookmark : save) { - Set<String> tagList = bookmark.getTags(); - boolean contain = false; - if (tagList != null) { - for (String tag : tagList) { - if (tag.indexOf(word) == 0 && !searchLine.contains(tag)) { - contain = true; - if (map.containsKey(tag)) { - Integer count = map.get(tag); - ++count; - map.put(tag, count); - } else { - map.put(tag, 1); - } - } - } + String word = search[size - 1]; + List<FacetTopic> save = new ArrayList<FacetTopic>(suggestions); + for (FacetTopic topic : save) { + String tag = topic.getTopicName(); + if (tag != null) { + if (tag.indexOf(word) != 0 || searchLine.contains(tag)) { + suggestions.remove(topic); } - if (contain == false) { - bookmarkList.remove(bookmark); + } + } + List<Bookmark> cpy = new ArrayList<Bookmark>(bookmarkList); + for (Bookmark bookmark : cpy) { + Set<String> tags = bookmark.getTags(); + boolean delete = true; + for (FacetTopic topic : suggestions) { + String name = topic.getTopicName(); + if (tags != null && tags.contains(name)) { + delete = false; + break; } } - Set<String> keys = map.keySet(); - for (String key : keys) { - Suggestion newSuggestion = new Suggestion(); - newSuggestion.setName(key); - newSuggestion.setNb(map.get(key)); - suggestions.add(newSuggestion); + if (delete == true) { + bookmarkList.remove(bookmark); } - - Collections.sort(suggestions, new SuggestionsComparator()); } + Collections.sort(suggestions, new SuggestionsComparator()); } protected boolean bookmarkHasTag(Bookmark bookmark, String tag) { @@ -97,14 +84,14 @@ public String getJsonSuggestions() { String str = "["; String srch = ""; - Iterator<Suggestion> it = suggestions.iterator(); + Iterator<FacetTopic> it = suggestions.iterator(); if (search.length > 1) { srch = StringUtils.join(search, ' ', 0, (search.length - 1)); srch += " "; } while (it.hasNext()) { - Suggestion su = it.next(); - str += "\"" + srch + su.getName() + "\""; + FacetTopic su = it.next(); + str += "\"" + srch + su.getTopicName() + "\""; if (it.hasNext()) { str += ","; } @@ -120,10 +107,10 @@ public String getJsonDescription() { String str = "["; - Iterator<Suggestion> it = suggestions.iterator(); + Iterator<FacetTopic> it = suggestions.iterator(); while (it.hasNext()) { - Suggestion su = it.next(); - str += "\"" + su.getNb() + " results\""; + FacetTopic su = it.next(); + str += "\"" + su.getCount() + " results\""; if (it.hasNext()) { str += ","; } @@ -136,8 +123,10 @@ search = tab; } - public void setSuggestionList(List<Suggestion> list) { - suggestions = list; + public void setSuggestionList(List<FacetTopic> list) { + if (list != null) { + suggestions = new ArrayList<FacetTopic>(list); + } } public List<Bookmark> getBookmarkList() { @@ -148,7 +137,7 @@ return search; } - public List<Suggestion> getSuggestionList() { + public List<FacetTopic> getSuggestionList() { return suggestions; } } Deleted: trunk/src/main/java/org/chorem/bow/Suggestion.java =================================================================== --- trunk/src/main/java/org/chorem/bow/Suggestion.java 2010-06-02 14:14:19 UTC (rev 58) +++ trunk/src/main/java/org/chorem/bow/Suggestion.java 2010-06-02 15:11:39 UTC (rev 59) @@ -1,35 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.chorem.bow; - -/** - * - * @author bbrossaud - */ -public class Suggestion { - int nb = 0; - String name = ""; - - public void increment() { - nb++; - } - - public void setNb(int value) { - nb = value; - } - - public void setName(String str) { - name = str; - } - - public int getNb() { - return nb; - } - - public String getName() { - return name; - } -} Modified: trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java =================================================================== --- trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java 2010-06-02 14:14:19 UTC (rev 58) +++ trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java 2010-06-02 15:11:39 UTC (rev 59) @@ -2,23 +2,25 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ - package org.chorem.bow; import java.util.Comparator; +import org.nuiton.wikitty.FacetTopic; /** * * @author bbrossaud */ -public class SuggestionsComparator implements Comparator<Suggestion> { +public class SuggestionsComparator implements Comparator<FacetTopic> { @Override - public int compare(Suggestion o1, Suggestion o2) { - if (o1.getNb() < o2.getNb()) + public int compare(FacetTopic o1, FacetTopic o2) { + if (o1.getCount() < o2.getCount()) { return 1; - if (o1.getNb() > o2.getNb()) + } + if (o1.getCount() > o2.getCount()) { return -1; + } return 0; } } Modified: trunk/src/main/webapp/openSearchResult.jsp =================================================================== --- trunk/src/main/webapp/openSearchResult.jsp 2010-06-02 14:14:19 UTC (rev 58) +++ trunk/src/main/webapp/openSearchResult.jsp 2010-06-02 15:11:39 UTC (rev 59) @@ -16,11 +16,11 @@ if (bookmarkActions != null) { searchLine = bookmarkActions.getSearchLine(); } - String url = (String) request.getAttribute("bowUrl"); + String url = (String) request.getAttribute("bowUrl"); %> <html> - <jsp:include page="header.jsp" flush="true"> + <jsp:include page="header.jsp" flush="true"> <jsp:param name="bowUrl" value="<%=url%>"/> </jsp:include> <body> @@ -80,7 +80,7 @@ %> <%=tag%> <% - } + } %> </td> <% Modified: trunk/src/main/webapp/suggestions.jsp =================================================================== --- trunk/src/main/webapp/suggestions.jsp 2010-06-02 14:14:19 UTC (rev 58) +++ trunk/src/main/webapp/suggestions.jsp 2010-06-02 15:11:39 UTC (rev 59) @@ -3,6 +3,7 @@ <%@page import="org.chorem.bow.Suggestion" %> <%@page import="java.util.List" %> <%@page import="java.util.Iterator" %> +<%@page import="org.nuiton.wikitty.FacetTopic" %> <% @@ -10,7 +11,7 @@ if (osa != null) { String[] word = osa.getSearch(); if (word != null) { - List<Suggestion> suggestions = osa.getSuggestionList(); + List<FacetTopic> suggestions = osa.getSuggestionList(); if (suggestions != null) { %> <%=osa.getJsonResult()%>
participants (1)
-
bbrossaudï¼ users.chorem.org