You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ko...@apache.org on 2013/01/04 02:09:53 UTC

svn commit: r1428692 - in /labs/alike/trunk: build.xml src/java/org/apache/alike/eval/SimpleTopHitsEvaluator.java

Author: koji
Date: Fri Jan  4 01:09:53 2013
New Revision: 1428692

URL: http://svn.apache.org/viewvc?rev=1428692&view=rev
Log:
add custom similarity for getting precision

Modified:
    labs/alike/trunk/build.xml
    labs/alike/trunk/src/java/org/apache/alike/eval/SimpleTopHitsEvaluator.java

Modified: labs/alike/trunk/build.xml
URL: http://svn.apache.org/viewvc/labs/alike/trunk/build.xml?rev=1428692&r1=1428691&r2=1428692&view=diff
==============================================================================
--- labs/alike/trunk/build.xml (original)
+++ labs/alike/trunk/build.xml Fri Jan  4 01:09:53 2013
@@ -152,7 +152,7 @@
     <target name="eval" depends="alike-compile" description="run SimpleTopHitsEvaluator program">
         <java classname="org.apache.alike.eval.SimpleTopHitsEvaluator" fork="true">
             <jvmarg line="-Dfile.encoding=UTF-8"/>
-            <arg line="${index}"/>
+            <arg line="${index} ${noidf} ${nocoord}"/>
             <classpath refid="common.path.lib"/>
             <classpath path="${cls.dir}"/>
         </java>

Modified: labs/alike/trunk/src/java/org/apache/alike/eval/SimpleTopHitsEvaluator.java
URL: http://svn.apache.org/viewvc/labs/alike/trunk/src/java/org/apache/alike/eval/SimpleTopHitsEvaluator.java?rev=1428692&r1=1428691&r2=1428692&view=diff
==============================================================================
--- labs/alike/trunk/src/java/org/apache/alike/eval/SimpleTopHitsEvaluator.java (original)
+++ labs/alike/trunk/src/java/org/apache/alike/eval/SimpleTopHitsEvaluator.java Fri Jan  4 01:09:53 2013
@@ -36,6 +36,7 @@ import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.search.SortField.Type;
 import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.search.similarities.DefaultSimilarity;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.Version;
@@ -51,11 +52,16 @@ public class SimpleTopHitsEvaluator {
   
   public static void main(String[] args) throws Exception {
     final String index = args[0];
+    final boolean noIdf = args.length >= 2 ? Boolean.parseBoolean(args[1]) : false;
+    final boolean noCoord = args.length == 3 ? Boolean.parseBoolean(args[2]) : false;
     System.out.printf("index:\"%s\"\n", index);
     Directory dir = FSDirectory.open(new File(index));
     parser = new QueryParser(Version.LUCENE_40, F_HISTOGRAM, new WhitespaceAnalyzer(Version.LUCENE_40));
     reader = DirectoryReader.open(dir);
     searcher = new IndexSearcher(reader);
+    searcher.setSimilarity(new NoIdfCoordSimilarity(noIdf, noCoord));
+    System.out.printf("use IDF : %s\n", String.valueOf(!noIdf));
+    System.out.printf("use Coord : %s\n", String.valueOf(!noCoord));
     
     String[][] sortedIdsQueries = getSortedIDsQueries();
     int num = sortedIdsQueries.length;
@@ -179,4 +185,25 @@ public class SimpleTopHitsEvaluator {
     }
     return friends;
   }
+  
+  static class NoIdfCoordSimilarity extends DefaultSimilarity {
+    
+    private final boolean noIdf;
+    private final boolean noCoord;
+    
+    public NoIdfCoordSimilarity(boolean noIdf, boolean noCoord){
+      this.noIdf = noIdf;
+      this.noCoord = noCoord;
+    }
+    
+    @Override
+    public float idf(long docFreq, long numDocs){
+      return noIdf ? 1 : super.idf(docFreq, numDocs);
+    }
+    
+    @Override
+    public float coord(int overlap, int maxOverlap){
+      return noCoord ? 1 : super.coord(overlap, maxOverlap);
+    }
+  }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org