当我在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'中第二个最相似的词)。但这会再次减少其他搜索返回记录的数量。
答案 0 :(得分:1)
Oracle Text是数据库中的一个巨大产品(它在文档中获得了两本书)。文本有许多旋钮和杠杆我们可以用来修改开箱即用的行为。很难确定您要实现的目标,但我认为您应该尝试使用查询模板,因为该机制允许我们创建用户定义的评分算法。 Find out more