@Override
public FulltextMatchInfo getFulltextScoredMatchInfo(String fulltextQuery, String indexName, int nthMatch,
Column mainColumn, Model model, Database database) {
String indexSuffix = model.getFulltextIndexSuffix(indexName);
Table ft = database.getTable(Model.FULLTEXT_TABLE_NAME);
Column ftMain = ft.getColumn(Model.MAIN_KEY);
Column ftColumn = ft.getColumn(Model.FULLTEXT_FULLTEXT_KEY + indexSuffix);
String score = String.format("SCORE(%d)", nthMatch);
String nthSuffix = nthMatch == 1 ? "" : String.valueOf(nthMatch);
FulltextMatchInfo info = new FulltextMatchInfo();
if (nthMatch == 1) {
info.joins = Collections.singletonList(new Join(Join.INNER, ft.getQuotedName(), null, null,
ftMain.getFullQuotedName(), mainColumn.getFullQuotedName()));
}
info.whereExpr = String.format("CONTAINS(%s, ?, %d) > 0", ftColumn.getFullQuotedName(), nthMatch);
info.whereExprParam = fulltextQuery;
info.scoreExpr = String.format("(%s / 100)", score);
info.scoreAlias = openQuote() + "_nxscore" + nthSuffix + closeQuote();
info.scoreCol = new Column(mainColumn.getTable(), null, ColumnType.DOUBLE, null);
return info;
}