@Override
public FulltextMatchInfo getFulltextScoredMatchInfo(String fulltextQuery, String indexName, int nthMatch,
Column mainColumn, Model model, Database database) {
Table ft = database.getTable(model.FULLTEXT_TABLE_NAME);
Column ftMain = ft.getColumn(model.MAIN_KEY);
Column ftColumn = ft.getColumn(model.FULLTEXT_FULLTEXT_KEY);
String nthSuffix = nthMatch == 1 ? "" : String.valueOf(nthMatch);
String ftColumnName = ftColumn.getFullQuotedName();
if (ftColumn.getJdbcType() == Types.CLOB) {
String colFmt = getClobCast(false);
if (colFmt != null) {
ftColumnName = String.format(colFmt, ftColumnName, Integer.valueOf(255));
}
}
FulltextMatchInfo info = new FulltextMatchInfo();
info.joins = new ArrayList<Join>(1);
if (nthMatch == 1) {
info.joins.add(new Join(Join.INNER, ft.getQuotedName(), null, null, ftMain.getFullQuotedName(),
mainColumn.getFullQuotedName()));
}
info.whereExpr = String.format("NX_CONTAINS(%s, ?) = 1", ftColumnName);
info.whereExprParam = fulltextQuery;
info.scoreExpr = "1";
info.scoreAlias = "NXSCORE" + nthSuffix;
info.scoreCol = new Column(mainColumn.getTable(), null, ColumnType.DOUBLE, null);
return info;
}