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