You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2018/04/13 16:14:40 UTC
lucene-solr:branch_7x: SOLR-10513: Implement .equals() for
LuceneLevenshteinDistance.
Repository: lucene-solr
Updated Branches:
refs/heads/branch_7x a4f60c286 -> 6d771dcc9
SOLR-10513: Implement .equals() for LuceneLevenshteinDistance.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/6d771dcc
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/6d771dcc
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/6d771dcc
Branch: refs/heads/branch_7x
Commit: 6d771dcc9f0c6cbb33b1b5cf6c60f126713d9555
Parents: a4f60c2
Author: jdyer1 <jd...@apache.org>
Authored: Fri Apr 13 11:10:21 2018 -0500
Committer: jdyer1 <jd...@apache.org>
Committed: Fri Apr 13 11:13:56 2018 -0500
----------------------------------------------------------------------
.../search/spell/LuceneLevenshteinDistance.java | 8 +++++
solr/CHANGES.txt | 2 ++
.../spelling/ConjunctionSolrSpellChecker.java | 3 +-
.../ConjunctionSolrSpellCheckerTest.java | 35 ++++++++++++++++----
4 files changed, 40 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6d771dcc/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneLevenshteinDistance.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneLevenshteinDistance.java b/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneLevenshteinDistance.java
index 3ba0bd3..21ca535 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneLevenshteinDistance.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneLevenshteinDistance.java
@@ -114,4 +114,12 @@ public final class LuceneLevenshteinDistance implements StringDistance {
}
return ref;
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (null == obj) return false;
+ return (getClass() == obj.getClass());
+ }
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6d771dcc/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 9702773..1938465 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -134,6 +134,8 @@ Bug Fixes
(Rohit, Varun Thacker)
* SOLR-12150: Fix a test bug in CdcrBidirectionalTest.testBiDir (Steve Rowe, Amrit Sarkar via Varun Thacker)
+
+* SOLR-10513: ConjunctionSolrSpellChecker did not work with LuceneLevenshteinDistance (Amrit Sarkar via James Dyer)
Optimizations
----------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6d771dcc/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java b/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java
index 2daab28..f92919d 100644
--- a/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java
+++ b/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java
@@ -81,9 +81,8 @@ public class ConjunctionSolrSpellChecker extends SolrSpellChecker {
checkers.add(checker);
}
- @SuppressWarnings("unchecked")
@Override
- public String init(NamedList config, SolrCore core) {
+ public String init(@SuppressWarnings("rawtypes") NamedList config, SolrCore core) {
for (int i = 0; i < checkers.size(); i++) {
SolrSpellChecker c = checkers.get(i);
String dn = c.init(config, core);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6d771dcc/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java b/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
index 0df837f..8ec933b 100644
--- a/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
@@ -18,27 +18,50 @@ package org.apache.solr.spelling;
import java.io.IOException;
+import org.apache.lucene.search.spell.JaroWinklerDistance;
import org.apache.lucene.search.spell.LevenshteinDistance;
+import org.apache.lucene.search.spell.LuceneLevenshteinDistance;
import org.apache.lucene.search.spell.NGramDistance;
import org.apache.lucene.search.spell.StringDistance;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.core.SolrCore;
import org.apache.solr.search.SolrIndexSearcher;
+import org.junit.Assert;
import org.junit.Test;
public class ConjunctionSolrSpellCheckerTest extends LuceneTestCase {
+ public static final Class<?>[] AVAILABLE_DISTANCES = {LevenshteinDistance.class, LuceneLevenshteinDistance.class,
+ JaroWinklerDistance.class, NGramDistance.class};
+
@Test
public void test() throws Exception {
ConjunctionSolrSpellChecker cssc = new ConjunctionSolrSpellChecker();
- MockSolrSpellChecker levenstein1 = new MockSolrSpellChecker(new LevenshteinDistance());
- MockSolrSpellChecker levenstein2 = new MockSolrSpellChecker(new LevenshteinDistance());
- MockSolrSpellChecker ngram = new MockSolrSpellChecker(new NGramDistance());
+ @SuppressWarnings("unchecked")
+ Class<StringDistance> sameDistance = (Class<StringDistance>) AVAILABLE_DISTANCES[random().nextInt(AVAILABLE_DISTANCES.length)];
+
+ StringDistance sameDistance1 = sameDistance.newInstance();
+ StringDistance sameDistance2 = sameDistance.newInstance();
+
+ //NGramDistance defaults to 2, so we'll try 3 or 4 to ensure we have one that is not-equal.
+ StringDistance differentDistance = new NGramDistance(3);
+ if(sameDistance1.equals(differentDistance)) {
+ differentDistance = new NGramDistance(4);
+ if(sameDistance1.equals(differentDistance)) {
+ fail("Cannot set up test. 2 NGramDistances with different gram sizes should not be equal.");
+ }
+ }
+ Assert.assertEquals("The distance " + sameDistance + " does not properly implement equals.", sameDistance1, sameDistance2);
+
+
+ MockSolrSpellChecker checker1 = new MockSolrSpellChecker(sameDistance1);
+ MockSolrSpellChecker checker2 = new MockSolrSpellChecker(sameDistance2);
+ MockSolrSpellChecker checker3 = new MockSolrSpellChecker(differentDistance);
- cssc.addChecker(levenstein1);
- cssc.addChecker(levenstein2);
+ cssc.addChecker(checker1);
+ cssc.addChecker(checker2);
try {
- cssc.addChecker(ngram);
+ cssc.addChecker(checker3);
fail("ConjunctionSolrSpellChecker should have thrown an exception about non-identical StringDistances.");
} catch (IllegalArgumentException iae) {
// correct behavior