Author: sslavic
Date: Sat Nov 30 17:29:50 2013
New Revision: 1546758
URL: http://svn.apache.org/r1546758
Log:
MAHOUT-1312: LocalitySensitiveHashSearch does not limit search results
Modified:
mahout/trunk/CHANGELOG
mahout/trunk/core/pom.xml
mahout/trunk/core/src/main/java/org/apache/mahout/math/neighborhood/LocalitySensitiveHashSearch.java
mahout/trunk/core/src/test/java/org/apache/mahout/math/neighborhood/SearchSanityTest.java
mahout/trunk/pom.xml
Modified: mahout/trunk/CHANGELOG
URL:
http://svn.apache.org/viewvc/mahout/trunk/CHANGELOG?rev=1546758&r1=1546757&r2=1546758&view=diff
==============================================================================
--- mahout/trunk/CHANGELOG (original)
+++ mahout/trunk/CHANGELOG Sat Nov 30 17:29:50 2013
@@ -2,6 +2,8 @@ Mahout Change Log
Release 0.9 - unreleased
+ MAHOUT-1312: LocalitySensitiveHashSearch does not limit search results
(sslavic)
+
MAHOUT-1362: Remove examples/bin/build-reuters.sh (smarthi)
MAHOUT-1361: Online algorithm for computing accurate Quantiles using 1-D
clustering (tdunning)
Modified: mahout/trunk/core/pom.xml
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/pom.xml?rev=1546758&r1=1546757&r2=1546758&view=diff
==============================================================================
--- mahout/trunk/core/pom.xml (original)
+++ mahout/trunk/core/pom.xml Sat Nov 30 17:29:50 2013
@@ -178,6 +178,12 @@
</dependency>
<dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/math/neighborhood/LocalitySensitiveHashSearch.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/math/neighborhood/LocalitySensitiveHashSearch.java?rev=1546758&r1=1546757&r2=1546758&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/math/neighborhood/LocalitySensitiveHashSearch.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/math/neighborhood/LocalitySensitiveHashSearch.java
Sat Nov 30 17:29:50 2013
@@ -188,12 +188,15 @@ public class LocalitySensitiveHashSearch
@Override
public List<WeightedThing<Vector>> search(Vector query, int limit) {
PriorityQueue<WeightedThing<Vector>> top = searchInternal(query);
- List<WeightedThing<Vector>> results =
Lists.newArrayListWithExpectedSize(limit);
- while (limit > 0 && top.size() != 0) {
+ List<WeightedThing<Vector>> results =
Lists.newArrayListWithExpectedSize(top.size());
+ while (top.size() != 0) {
WeightedThing<Vector> wv = top.pop();
results.add(new WeightedThing<Vector>(((HashedVector)
wv.getValue()).getVector(), wv.getWeight()));
}
Collections.reverse(results);
+ if (limit < results.size()) {
+ results = results.subList(0, limit);
+ }
return results;
}
Modified:
mahout/trunk/core/src/test/java/org/apache/mahout/math/neighborhood/SearchSanityTest.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/test/java/org/apache/mahout/math/neighborhood/SearchSanityTest.java?rev=1546758&r1=1546757&r2=1546758&view=diff
==============================================================================
---
mahout/trunk/core/src/test/java/org/apache/mahout/math/neighborhood/SearchSanityTest.java
(original)
+++
mahout/trunk/core/src/test/java/org/apache/mahout/math/neighborhood/SearchSanityTest.java
Sat Nov 30 17:29:50 2013
@@ -17,6 +17,8 @@
package org.apache.mahout.math.neighborhood;
+import static org.hamcrest.Matchers.*;
+
import java.util.Arrays;
import java.util.List;
@@ -208,6 +210,17 @@ public class SearchSanityTest extends Ma
}
@Test
+ public void testSearchLimiting() {
+ searcher.clear();
+ searcher.addAll(dataPoints);
+ for (Vector datapoint : dataPoints) {
+ List<WeightedThing<Vector>> firstTwo = searcher.search(datapoint, 2);
+
+ assertThat("Search limit isn't respected", firstTwo.size(),
is(lessThanOrEqualTo(2)));
+ }
+ }
+
+ @Test
public void testRemove() {
searcher.clear();
for (int i = 0; i < dataPoints.rowSize(); ++i) {
Modified: mahout/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/mahout/trunk/pom.xml?rev=1546758&r1=1546757&r2=1546758&view=diff
==============================================================================
--- mahout/trunk/pom.xml (original)
+++ mahout/trunk/pom.xml Sat Nov 30 17:29:50 2013
@@ -202,6 +202,12 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-all</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.2</version>