1

当我在 Oracle 中运行以下文本搜索查询时:

SELECT SCORE(1), text_search
FROM search  
WHERE contains(text_search, 'fuzzy(citi, 70, 100, WEIGHT) within Name', 1) > 0 
ORDER BY SCORE(1) DESC

返回的最高得分为 100 的记录是包含多个与“citi”相似的词的记录:堪萨斯
-得分 100

但包含完全匹配的记录只有 76 分:
花旗集团 - 得分 76

仅包含一个相似词的记录得分为 53
City of Abilene - 得分 53

完全匹配的记录不应该是最高分吗?有没有办法做到这一点?

如果我增加到similarity_score80,则不再返回带有“城市”的记录。但这会减少其他搜索返回的记录数量。

如果我减少numterms到 2,则不再返回带有“city”的记录(显然 Oracle 不认为“city”是“citi”的第二个最相似的词)。但这再次减少了其他搜索返回的记录数。

4

1 回答 1

1

Oracle Text 是数据库中的一个庞大产品(它在文档中有两本书)。文本有许多旋钮和杠杆,我们可以用来修改开箱即用的行为。很难确定您要达到什么目标,但我认为您应该尝试使用查询模板,因为该机制允许我们创建用户定义的评分算法。 了解更多

于 2014-12-29T07:59:34.103 回答