Revision: 14745
          http://gate.svn.sourceforge.net/gate/?rev=14745&view=rev
Author:   valyt
Date:     2011-12-12 15:49:49 +0000 (Mon, 12 Dec 2011)
Log Message:
-----------
Support for specifying scorers associated with LocalIndex instances.

Modified Paths:
--------------
    
mimir/trunk/mimir-web/grails-app/controllers/gate/mimir/web/LocalIndexController.groovy
    mimir/trunk/mimir-web/grails-app/domain/gate/mimir/web/LocalIndex.groovy
    mimir/trunk/mimir-web/grails-app/views/indexAdmin/admin.gsp
    mimir/trunk/mimir-web/grails-app/views/localIndex/edit.gsp
    mimir/trunk/mimir-web/grails-app/views/localIndex/list.gsp
    mimir/trunk/mimir-web/grails-app/views/localIndex/show.gsp
    mimir/trunk/mimir-web/src/templates/conf/MimirConfig.groovy

Modified: 
mimir/trunk/mimir-web/grails-app/controllers/gate/mimir/web/LocalIndexController.groovy
===================================================================
--- 
mimir/trunk/mimir-web/grails-app/controllers/gate/mimir/web/LocalIndexController.groovy
     2011-12-12 14:55:08 UTC (rev 14744)
+++ 
mimir/trunk/mimir-web/grails-app/controllers/gate/mimir/web/LocalIndexController.groovy
     2011-12-12 15:49:49 UTC (rev 14745)
@@ -136,6 +136,7 @@
         }
       }
       localIndexInstance.properties = params
+      if(localIndexInstance.scorer == 'null') localIndexInstance.scorer = null
       if(!localIndexInstance.hasErrors() && localIndexInstance.save()) {
         flash.message = "LocalIndex ${params.id} updated"
         redirect(action:show,id:localIndexInstance.id)
@@ -156,6 +157,7 @@
   def create = {
     def localIndexInstance = new LocalIndex()
     localIndexInstance.properties = params
+    if(localIndexInstance.scorer == 'null') localIndexInstance.scorer = null
     return ['localIndexInstance':localIndexInstance]
   }
   
@@ -188,13 +190,13 @@
             new File(mimirConfigurationInstance.indexBaseDirectory))
       tempFile.delete()
       localIndexInstance.indexDirectory = tempFile.absolutePath
-    }
-    catch(IOException e) {
+    } catch(IOException e) {
       flash.message = "Couldn't create directory for new index: ${e}"
       log.info("Couldn't create directory for new index", e)
       redirect(uri:"/")
       return
     }
+    
     if(!localIndexInstance.hasErrors() && localIndexInstance.save()) {
       try{
         localIndexService.createIndex(localIndexInstance,

Modified: 
mimir/trunk/mimir-web/grails-app/domain/gate/mimir/web/LocalIndex.groovy
===================================================================
--- mimir/trunk/mimir-web/grails-app/domain/gate/mimir/web/LocalIndex.groovy    
2011-12-12 14:55:08 UTC (rev 14744)
+++ mimir/trunk/mimir-web/grails-app/domain/gate/mimir/web/LocalIndex.groovy    
2011-12-12 15:49:49 UTC (rev 14745)
@@ -35,6 +35,17 @@
   String indexDirectory
 
 
+  /**
+   * The scorer to be used during searching.
+   */
+  String scorer
+  
+  
+  static constraints = {
+    indexDirectory (nullable:false, blank:false)
+    scorer (nullable:true, blank:true)
+  }
+  
   // behaviour
 
   /**

Modified: mimir/trunk/mimir-web/grails-app/views/indexAdmin/admin.gsp
===================================================================
--- mimir/trunk/mimir-web/grails-app/views/indexAdmin/admin.gsp 2011-12-12 
14:55:08 UTC (rev 14744)
+++ mimir/trunk/mimir-web/grails-app/views/indexAdmin/admin.gsp 2011-12-12 
15:49:49 UTC (rev 14745)
@@ -1,4 +1,5 @@
 <%@ page import="gate.mimir.web.Index"%>
+<%@ page import="gate.mimir.web.LocalIndex"%>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -70,8 +71,15 @@
             <td><mimir:revealAnchor 
id="annotsConf">Detail...</mimir:revealAnchor>
             <mimir:revealBlock id="annotsConf"><mimir:indexAnnotationsConfig 
index="${indexInstance}"/></mimir:revealBlock>
             </td>
-          </tr>          
-
+          </tr>
+          <g:if test="${indexInstance instanceof LocalIndex}" >
+                 <tr class="prop">
+                   <td valign="top" class="name">Scorer:</td>
+                   <td valign="top" class="value">
+                     ${indexInstance.scorer}
+                   </td>
+                 </tr>          
+          </g:if>
           <g:if test="${indexInstance.state == Index.SEARCHING}">
             <tr class="prop">
               <td colspan="2">

Modified: mimir/trunk/mimir-web/grails-app/views/localIndex/edit.gsp
===================================================================
--- mimir/trunk/mimir-web/grails-app/views/localIndex/edit.gsp  2011-12-12 
14:55:08 UTC (rev 14744)
+++ mimir/trunk/mimir-web/grails-app/views/localIndex/edit.gsp  2011-12-12 
15:49:49 UTC (rev 14745)
@@ -68,6 +68,16 @@
                                        
value="${fieldValue(bean:localIndexInstance,field:'indexDirectory')}" />
                                </td>
                        </tr>
+
+      <tr class="prop">
+        <td valign="top" class="name"><label for="scorer">Scorer:</label></td>
+        <td valign="top"
+          class="value 
${hasErrors(bean:localIndexInstance,field:'scorer','errors')}">
+        <g:select 
from="${grailsApplication.config.gate.mimir.scorers.keySet()}"
+            value="${fieldValue(bean:localIndexInstance,field:'scorer')}" 
+            noSelection="${[null:'No Scoring']}" 
+            name="scorer"/>
+      </tr>
                        
       <tr class="prop">
         <td valign="top" class="name"><label for="uriIsExternalLink">Document

Modified: mimir/trunk/mimir-web/grails-app/views/localIndex/list.gsp
===================================================================
--- mimir/trunk/mimir-web/grails-app/views/localIndex/list.gsp  2011-12-12 
14:55:08 UTC (rev 14744)
+++ mimir/trunk/mimir-web/grails-app/views/localIndex/list.gsp  2011-12-12 
15:49:49 UTC (rev 14745)
@@ -22,10 +22,9 @@
                     <thead>
                         <tr>
                                <g:sortableColumn property="name" title="Name" 
/>
-                        
                                <g:sortableColumn property="state" 
title="State" />
-                        
                                <g:sortableColumn property="indexDirectory" 
title="Index Directory" />
+                            <g:sortableColumn property="scorer" title="Scorer" 
/>                              
                             <th>&nbsp;</th>
                         </tr>
                     </thead>
@@ -35,6 +34,7 @@
                             <td><g:link action="show" 
id="${localIndexInstance.id}">${fieldValue(bean:localIndexInstance, 
field:'name')}</g:link></td>
                             <td>${fieldValue(bean:localIndexInstance, 
field:'state')}</td>
                             <td>${fieldValue(bean:localIndexInstance, 
field:'indexDirectory')}</td>
+                            <td>${fieldValue(bean:localIndexInstance, 
field:'scorer')}</td>
                                        <td>
                                                                  <g:if 
test='${localIndexInstance.state == Index.SEARCHING}'>
                                                                    <g:link 
controller="gus" action="search"

Modified: mimir/trunk/mimir-web/grails-app/views/localIndex/show.gsp
===================================================================
--- mimir/trunk/mimir-web/grails-app/views/localIndex/show.gsp  2011-12-12 
14:55:08 UTC (rev 14744)
+++ mimir/trunk/mimir-web/grails-app/views/localIndex/show.gsp  2011-12-12 
15:49:49 UTC (rev 14745)
@@ -79,9 +79,19 @@
                        ${fieldValue(bean:localIndexInstance,
                                                                
field:'indexDirectory')}
                        </td>
-
                </tr>
 
+    <tr class="prop">
+      <td valign="top" class="name">Scorer:</td>
+
+      <td valign="top" class="value">
+        <g:if test="${localIndexInstance?.scorer}">
+          ${fieldValue(bean:localIndexInstance, field:'scorer')}
+        </g:if>
+        <g:else>No Scoring</g:else>
+      </td>
+    </tr>
+
                <tr class="prop">
                        <td valign="top" class="name"><label 
for="uriIsExternalLink">Document
                        URIs are external links:</label></td>

Modified: mimir/trunk/mimir-web/src/templates/conf/MimirConfig.groovy
===================================================================
--- mimir/trunk/mimir-web/src/templates/conf/MimirConfig.groovy 2011-12-12 
14:55:08 UTC (rev 14744)
+++ mimir/trunk/mimir-web/src/templates/conf/MimirConfig.groovy 2011-12-12 
15:49:49 UTC (rev 14745)
@@ -1,3 +1,9 @@
+import it.unimi.dsi.mg4j.search.score.BM25Scorer
+import it.unimi.dsi.mg4j.search.score.CountScorer
+import it.unimi.dsi.mg4j.search.score.TfIdfScorer
+import gate.mimir.search.score.BindingScorer
+import gate.mimir.search.score.DelegatingScoringQueryExecutor
+
 // Mimir configuration.  Values in this file get merged into the main
 // GrailsApplication.config under gate.mimir, with values specified directly in
 // Config.groovy overriding those specified here (and values in external
@@ -38,3 +44,25 @@
 // the one set here _is ignored_ (so changes in the admin UI take precedence)!
 
 // indexBaseDirectory = "mimir-indexes"
+
+// The set of scorers available. Each scorer has a name and is defined by a 
+// closure that returns a fully configured instance of 
+// gate.mimir.search.score.MimirScorer.
+
+scorers = {
+  counting = {
+    new DelegatingScoringQueryExecutor(new CountScorer())
+  }
+  
+  tfidf = {
+    new DelegatingScoringQueryExecutor(new TfIdfScorer())
+  }
+  
+  bm25 = {
+    new DelegatingScoringQueryExecutor(new BM25Scorer())
+  }
+  
+  mimir = {
+    new BindingScorer()
+  }  
+}
\ No newline at end of file

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs

Reply via email to