Added option for automatically approving best recon candidates that match the expected type and score at least some minimum score.
git-svn-id: http://google-refine.googlecode.com/svn/trunk@115 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
b4935f576c
commit
b3167a1a9f
@ -92,7 +92,9 @@ public class ApplyOperationsCommand extends Command {
|
|||||||
engineConfig,
|
engineConfig,
|
||||||
columnName,
|
columnName,
|
||||||
obj.getString("typeID"),
|
obj.getString("typeID"),
|
||||||
obj.getString("typeName")
|
obj.getString("typeName"),
|
||||||
|
obj.getBoolean("autoMatch"),
|
||||||
|
obj.getDouble("minScore")
|
||||||
);
|
);
|
||||||
} else if ("save-protograph".equals(op)) {
|
} else if ("save-protograph".equals(op)) {
|
||||||
operation = new SaveProtographOperation(
|
operation = new SaveProtographOperation(
|
||||||
|
@ -17,7 +17,9 @@ public class ReconcileCommand extends EngineDependentCommand {
|
|||||||
String columnName = request.getParameter("columnName");
|
String columnName = request.getParameter("columnName");
|
||||||
String typeID = request.getParameter("typeID");
|
String typeID = request.getParameter("typeID");
|
||||||
String typeName = request.getParameter("typeName");
|
String typeName = request.getParameter("typeName");
|
||||||
|
boolean autoMatch = "true".equals(request.getParameter("autoMatch"));
|
||||||
|
double minScore = autoMatch ? Double.parseDouble(request.getParameter("minScore")) : 0;
|
||||||
|
|
||||||
return new ReconOperation(engineConfig, columnName, typeID, typeName);
|
return new ReconOperation(engineConfig, columnName, typeID, typeName, autoMatch, minScore);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import com.metaweb.gridworks.model.Recon;
|
|||||||
import com.metaweb.gridworks.model.ReconCandidate;
|
import com.metaweb.gridworks.model.ReconCandidate;
|
||||||
import com.metaweb.gridworks.model.ReconConfig;
|
import com.metaweb.gridworks.model.ReconConfig;
|
||||||
import com.metaweb.gridworks.model.Row;
|
import com.metaweb.gridworks.model.Row;
|
||||||
|
import com.metaweb.gridworks.model.Recon.Judgment;
|
||||||
import com.metaweb.gridworks.model.changes.CellChange;
|
import com.metaweb.gridworks.model.changes.CellChange;
|
||||||
import com.metaweb.gridworks.model.changes.MassCellChange;
|
import com.metaweb.gridworks.model.changes.MassCellChange;
|
||||||
import com.metaweb.gridworks.process.LongRunningProcess;
|
import com.metaweb.gridworks.process.LongRunningProcess;
|
||||||
@ -44,12 +45,23 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
final protected String _columnName;
|
final protected String _columnName;
|
||||||
final protected String _typeID;
|
final protected String _typeID;
|
||||||
final protected String _typeName;
|
final protected String _typeName;
|
||||||
|
final protected boolean _autoMatch;
|
||||||
|
final protected double _minScore;
|
||||||
|
|
||||||
public ReconOperation(JSONObject engineConfig, String columnName, String typeID, String typeName) {
|
public ReconOperation(
|
||||||
|
JSONObject engineConfig,
|
||||||
|
String columnName,
|
||||||
|
String typeID,
|
||||||
|
String typeName,
|
||||||
|
boolean autoMatch,
|
||||||
|
double minScore
|
||||||
|
) {
|
||||||
super(engineConfig);
|
super(engineConfig);
|
||||||
_columnName = columnName;
|
_columnName = columnName;
|
||||||
_typeID = typeID;
|
_typeID = typeID;
|
||||||
_typeName = typeName;
|
_typeName = typeName;
|
||||||
|
_autoMatch = autoMatch;
|
||||||
|
_minScore = minScore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Process createProcess(Project project, Properties options) throws Exception {
|
public Process createProcess(Project project, Properties options) throws Exception {
|
||||||
@ -64,8 +76,7 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
return new ReconProcess(
|
return new ReconProcess(
|
||||||
project,
|
project,
|
||||||
getEngineConfig(),
|
getEngineConfig(),
|
||||||
description,
|
description
|
||||||
_columnName
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +89,8 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
writer.key("columnName"); writer.value(_columnName);
|
writer.key("columnName"); writer.value(_columnName);
|
||||||
writer.key("typeID"); writer.value(_typeID);
|
writer.key("typeID"); writer.value(_typeID);
|
||||||
writer.key("typeName"); writer.value(_typeName);
|
writer.key("typeName"); writer.value(_typeName);
|
||||||
|
writer.key("autoMatch"); writer.value(_autoMatch);
|
||||||
|
writer.key("minScore"); writer.value(_minScore);
|
||||||
writer.key("engineConfig"); writer.value(getEngineConfig());
|
writer.key("engineConfig"); writer.value(getEngineConfig());
|
||||||
writer.endObject();
|
writer.endObject();
|
||||||
}
|
}
|
||||||
@ -131,20 +144,17 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
public class ReconProcess extends LongRunningProcess implements Runnable {
|
public class ReconProcess extends LongRunningProcess implements Runnable {
|
||||||
final protected Project _project;
|
final protected Project _project;
|
||||||
final protected JSONObject _engineConfig;
|
final protected JSONObject _engineConfig;
|
||||||
final protected String _columnName;
|
|
||||||
protected List<ReconEntry> _entries;
|
protected List<ReconEntry> _entries;
|
||||||
protected int _cellIndex;
|
protected int _cellIndex;
|
||||||
|
|
||||||
public ReconProcess(
|
public ReconProcess(
|
||||||
Project project,
|
Project project,
|
||||||
JSONObject engineConfig,
|
JSONObject engineConfig,
|
||||||
String description,
|
String description
|
||||||
String columnName
|
|
||||||
) {
|
) {
|
||||||
super(description);
|
super(description);
|
||||||
_project = project;
|
_project = project;
|
||||||
_engineConfig = engineConfig;
|
_engineConfig = engineConfig;
|
||||||
_columnName = columnName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Runnable getRunnable() {
|
protected Runnable getRunnable() {
|
||||||
@ -350,12 +360,13 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
typeIDs[j] = types.getJSONObject(j).getString("id");
|
typeIDs[j] = types.getJSONObject(j).getString("id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double score = result.getDouble("relevance:score");
|
||||||
ReconCandidate candidate = new ReconCandidate(
|
ReconCandidate candidate = new ReconCandidate(
|
||||||
result.getString("id"),
|
result.getString("id"),
|
||||||
result.getString("guid"),
|
result.getString("guid"),
|
||||||
result.getString("name"),
|
result.getString("name"),
|
||||||
typeIDs,
|
typeIDs,
|
||||||
result.getDouble("relevance:score")
|
score
|
||||||
);
|
);
|
||||||
|
|
||||||
// best match
|
// best match
|
||||||
@ -368,6 +379,10 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
for (String typeID : candidate.typeIDs) {
|
for (String typeID : candidate.typeIDs) {
|
||||||
if (_typeID.equals(typeID)) {
|
if (_typeID.equals(typeID)) {
|
||||||
recon.setFeature(Recon.Feature_typeMatch, true);
|
recon.setFeature(Recon.Feature_typeMatch, true);
|
||||||
|
if (_autoMatch && score >= _minScore) {
|
||||||
|
recon.match = candidate;
|
||||||
|
recon.judgment = Judgment.Matched;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user