From: <lor...@us...> - 2011-10-27 11:31:40
|
Revision: 3331 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3331&view=rev Author: lorenz_b Date: 2011-10-27 11:31:34 +0000 (Thu, 27 Oct 2011) Log Message: ----------- Fixed NPEs in Solr search. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/HierarchicalSolrSearch.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-10-26 16:24:10 UTC (rev 3330) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-10-27 11:31:34 UTC (rev 3331) @@ -68,6 +68,7 @@ private Monitor mon = MonitorFactory.getTimeMonitor("tbsl"); private static final int RECURSION_DEPTH = 2; + private static final int MAX_URIS_PER_SLOT = 10; private Ranking ranking; private boolean useRemoteEndpointValidation; @@ -135,11 +136,11 @@ private void init(Options options){ String resourcesIndexUrl = options.fetch("solr.resources.url"); String resourcesIndexSearchField = options.fetch("solr.resources.searchfield"); - resource_index = new ThresholdSlidingSolrSearch(resourcesIndexUrl, resourcesIndexSearchField, 1.0, 0.1); + resource_index = new ThresholdSlidingSolrSearch(resourcesIndexUrl, resourcesIndexSearchField, "label", 1.0, 0.1); String classesIndexUrl = options.fetch("solr.classes.url"); String classesIndexSearchField = options.fetch("solr.classes.searchfield"); - SolrSearch dbpediaClassIndex = new SolrSearch(classesIndexUrl, classesIndexSearchField); + SolrSearch dbpediaClassIndex = new SolrSearch(classesIndexUrl, classesIndexSearchField, "label"); String yagoClassesIndexUrl = options.fetch("solr.yago.classes.url"); String yagoClassesIndexSearchField = options.fetch("solr.yago.classes.searchfield"); @@ -149,11 +150,11 @@ String propertiesIndexUrl = options.fetch("solr.properties.url"); String propertiesIndexSearchField = options.fetch("solr.properties.searchfield"); - SolrSearch labelBasedPropertyIndex = new SolrSearch(propertiesIndexUrl, propertiesIndexSearchField); + SolrSearch labelBasedPropertyIndex = new SolrSearch(propertiesIndexUrl, propertiesIndexSearchField, "label"); String boaPatternIndexUrl = options.fetch("solr.boa.properties.url"); String boaPatternIndexSearchField = options.fetch("solr.boa.properties.searchfield"); - SolrSearch patternBasedPropertyIndex = new SolrSearch(boaPatternIndexUrl, boaPatternIndexSearchField); + SolrSearch patternBasedPropertyIndex = new SolrSearch(boaPatternIndexUrl, boaPatternIndexSearchField, "nlr"); //first BOA pattern then label based // property_index = new HierarchicalSolrSearch(patternBasedPropertyIndex, labelBasedPropertyIndex); @@ -535,10 +536,16 @@ } tmp.addAll(rs.getItems()); + int i = 0; for(SolrQueryResultItem item : tmp){ sortedURIs.add(item.getUri()); + if(i == MAX_URIS_PER_SLOT){ + break; + } + i++; } tmp.clear(); + } slot2URI.put(slot, sortedURIs); @@ -735,7 +742,7 @@ logger.info("Done in " + mon.getLastValue() + "ms."); } - private List<String> getResultFromRemoteEndpoint(String query){ + private List<String> getResultFromRemoteEndpoint(String query){System.out.println(query); List<String> resources = new ArrayList<String>(); try { String queryString = query; @@ -784,6 +791,8 @@ // String question = "Give me all books written by authors influenced by Ernest Hemingway."; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); +// SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://greententacle.techfak.uni-bielefeld.de:5171/sparql"), +// Collections.<String>singletonList(""), Collections.<String>emptyList()); SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://greententacle.techfak.uni-bielefeld.de:5171/sparql"), Collections.<String>singletonList(""), Collections.<String>emptyList()); learner.setEndpoint(endpoint); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/HierarchicalSolrSearch.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/HierarchicalSolrSearch.java 2011-10-26 16:24:10 UTC (rev 3330) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/HierarchicalSolrSearch.java 2011-10-27 11:31:34 UTC (rev 3331) @@ -32,5 +32,14 @@ } return resources; } + + @Override + public SolrQueryResultSet getResourcesWithScores(String queryString, int limit, int offset, boolean sorted) { + SolrQueryResultSet rs = primarySearch.getResourcesWithScores(queryString, limit, offset, sorted); + if(rs.getItems().size() < limit){ + rs.add(secondarySearch.getResourcesWithScores(queryString, limit-rs.getItems().size(), offset, sorted)); + } + return rs; + } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java 2011-10-26 16:24:10 UTC (rev 3330) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java 2011-10-27 11:31:34 UTC (rev 3331) @@ -25,23 +25,28 @@ private int lastTotalHits = 0; private String searchField; + private String labelField; public SolrSearch() { - // TODO Auto-generated constructor stub } public SolrSearch(String solrServerURL){ + this(solrServerURL, null, null); + } + + public SolrSearch(String solrServerURL, String searchField){ + this(solrServerURL, searchField, null); + } + + public SolrSearch(String solrServerURL, String searchField, String labelField){ try { server = new CommonsHttpSolrServer(solrServerURL); server.setRequestWriter(new BinaryRequestWriter()); } catch (MalformedURLException e) { e.printStackTrace(); } - } - - public SolrSearch(String solrServerURL, String searchField){ - this(solrServerURL); this.searchField = searchField; + this.labelField = labelField; } public String getServerURL() { @@ -51,6 +56,14 @@ public String getSearchField() { return searchField; } + + public void setLabelField(String labelField) { + this.labelField = labelField; + } + + public String getLabelField() { + return labelField; + } @Override public List<String> getResources(String queryString) { @@ -110,7 +123,7 @@ lastTotalHits = (int) docList.getNumFound(); for(SolrDocument d : docList){ - items.add(new SolrQueryResultItem((String) d.get("label"), (String) d.get("uri"), (Float) d.get("score"))); + items.add(new SolrQueryResultItem((String) d.get(labelField), (String) d.get("uri"), (Float) d.get("score"))); } } catch (SolrServerException e) { e.printStackTrace(); @@ -140,7 +153,7 @@ QueryResponse response; try { SolrQuery query = new SolrQuery((searchField != null) ? searchField + ":" + queryString : queryString); - query.setRows(hitsPerPage); + query.setRows(limit); query.setStart(offset); query.addField("score"); if(sorted){ @@ -152,7 +165,7 @@ lastTotalHits = (int) docList.getNumFound(); for(SolrDocument d : docList){ - items.add(new SolrQueryResultItem((String) d.get("label"), (String) d.get("uri"), (Float) d.get("score"))); + items.add(new SolrQueryResultItem((String) d.get(labelField), (String) d.get("uri"), (Float) d.get("score"))); } } catch (SolrServerException e) { e.printStackTrace(); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java 2011-10-26 16:24:10 UTC (rev 3330) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java 2011-10-27 11:31:34 UTC (rev 3331) @@ -21,13 +21,17 @@ } public ThresholdSlidingSolrSearch(String solrServerURL, String searchField, double minThreshold, double step) { - super(solrServerURL, searchField); + this(solrServerURL, searchField, null, minThreshold, step); + } + + public ThresholdSlidingSolrSearch(String solrServerURL, String searchField, String labelField, double minThreshold, double step) { + super(solrServerURL, searchField, labelField); this.minThreshold = minThreshold; this.step = step; } public ThresholdSlidingSolrSearch(SolrSearch search){ - super(search.getServerURL(), search.getSearchField()); + super(search.getServerURL(), search.getSearchField(), search.getLabelField()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |