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> </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