在Oracle模糊文本搜索中,具有多个相似单词的字符串的得分高于具有完全匹配的字符串

时间:2014-12-26 16:59:59

标签: oracle text-search

当我在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分的记录是那些包含多个类似单词的记录,其中包括#cit;':
堪萨斯州的城市 城市 - 得分100

但是包含完全匹配的记录的得分仅为76:
花旗小组 - 得分76

只包含一个相似单词的记录得分为53
阿比林的城市 - 得分53

具有完全匹配的记录是否应该得分最高?有没有办法实现这个目标?

如果我将similarity_score增加到80,则会记录“城市”字样。不再退回。但这会减少其他搜索返回记录的数量。

如果我将numterms减少为2,则会记录“' city'不再返回(显然,甲骨文并不认为'city'是'citi'中第二个最相似的词)。但这会再次减少其他搜索返回记录的数量。

1 个答案:

答案 0 :(得分:1)

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