You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/07/01 02:09:00 UTC

[jira] [Commented] (DRILL-6519) Add String Distance and Phonetic Functions

    [ https://issues.apache.org/jira/browse/DRILL-6519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16528958#comment-16528958 ] 

ASF GitHub Bot commented on DRILL-6519:
---------------------------------------

cgivre commented on a change in pull request #1331: DRILL-6519: Add String Distance and Phonetic Functions
URL: https://github.com/apache/drill/pull/1331#discussion_r199336411
 
 

 ##########
 File path: exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestPhoneticFunctions.java
 ##########
 @@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.drill.exec.fn.impl;
+
+import org.apache.drill.categories.SqlFunctionTest;
+import org.apache.drill.categories.UnlikelyTest;
+import org.apache.drill.test.ClusterFixture;
+import org.apache.drill.test.ClusterFixtureBuilder;
+import org.apache.drill.test.ClusterTest;
+import org.apache.drill.test.QueryResultSet;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import static org.junit.Assert.assertEquals;
+
+@Category({UnlikelyTest.class, SqlFunctionTest.class})
+public class TestPhoneticFunctions extends ClusterTest {
+
+  private QueryResultSet result;
+
+  @BeforeClass
+  public static void setup() throws Exception {
+    ClusterFixtureBuilder builder = ClusterFixture.builder(dirTestWatcher);
+    startCluster(builder);
+  }
+
+  @Test
+  public void testSoundex() throws Exception {
+    String result = queryBuilder()
+        .sql("select soundex('jaime') as soundex from (values(1))")
+        .singletonString();
+    assertEquals("J500", result);
+  }
+
+  @Test
+  public void testCaverphone1() throws Exception {
+    String result = queryBuilder()
+        .sql("SELECT caverphone1('jaime') as caverphone FROM (VALUES(1))")
+        .singletonString();
+    assertEquals("YM1111", result);
+  }
+
+  @Test
+  public void testCaverphone2() throws Exception {
+    String result = queryBuilder()
+        .sql("SELECT caverphone2('steve') as caverphone FROM (VALUES(1))")
+        .singletonString();
+    assertEquals("STF1111111", result);
+  }
+
+  @Test
+  public void testCologne() throws Exception {
+    String result = queryBuilder()
+        .sql("SELECT cologne_phonetic('steve') AS CP FROM (VALUES(1))")
+        .singletonString();
+    assertEquals("823", result);
+  }
+
+  @Test
+  public void testMatchRatingEncoder() throws Exception {
+    String result = queryBuilder()
+        .sql("SELECT match_rating_encoder('Boston') AS MR FROM (VALUES(1))")
+        .singletonString();
+    assertEquals("BSTN", result);
+  }
+
+  @Test
+  public void testNYSIIS() throws Exception {
+    String result = queryBuilder()
+        .sql("SELECT nysiis('Boston') AS ny FROM (VALUES(1))")
+        .singletonString();
+    assertEquals("BASTAN", result);
+  }
+
+  @Test
+  public void testRefinedSoundex() throws Exception {
+    String result = queryBuilder()
+        .sql("SELECT refined_soundex('Boston') AS rs FROM (VALUES(1))")
+        .singletonString();
+    assertEquals("B103608", result);
+  }
+
+  @Test
+  public void testSoundsLike() throws Exception {
+     int result = queryBuilder()
 
 Review comment:
   Done.  Ran the code formatter in Intellij.   Do you need me to squash commits?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> Add String Distance and Phonetic Functions
> ------------------------------------------
>
>                 Key: DRILL-6519
>                 URL: https://issues.apache.org/jira/browse/DRILL-6519
>             Project: Apache Drill
>          Issue Type: Improvement
>            Reporter: Charles Givre
>            Assignee: Charles Givre
>            Priority: Major
>              Labels: doc-impacting
>             Fix For: 1.14.0
>
>
> From a recent project, this collection of functions makes it possible to do fuzzy string matching as well as phonetic matching on strings. 
>  
> The following functions are all phonetic functions and map text to a number or string based on how the word sounds.  For instance "Jayme" and "Jaime" have the same soundex values and hence these functions can be used to match similar sounding words.
>  * caverphone1( <string> )
>  * caverphone2( <string> )
>  * cologne_phonetic( <string> )
>  * dm_soundex( <string> )
>  * double_metaphone(<string>)
>  * match_rating_encoder( <string> )
>  * metaphone(<string>)
>  * nysiis( <string> )
>  * refined_soundex(<string>)
>  * soundex(<string>)
> Additionally, there is the
> {code:java}
> sounds_like(<string1>,<string2>){code}
> function which can be used to find strings that sound similar.   For instance:
>  
> {code:java}
> SELECT * 
> FROM <data>
> WHERE sounds_like( last_name, 'Gretsky' )
> {code}
> h2. String Distance Functions
> In addition to the phonetic functions, there are a series of distance functions which measure the difference between two strings.  The functions include:
>  * cosine_distance(<string1>,<string2>)
>  * fuzzy_score(<string1>,<string2>)
>  * hamming_distance (<string1>,<string2>)
>  * jaccard_distance (<string1>,<string2>)
>  * jaro_distance (<string1>,<string2>)
>  * levenshtein_distance (<string1>,<string2>)
>  * longest_common_substring_distance(<string1>,<string2>)
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)