【问题标题】:Oracle contains with Fuzzy does not return logical resultOracle contains with Fuzzy 不返回逻辑结果
【发布时间】:2015-10-28 08:54:32
【问题描述】:

我有这个问题:

select id, name from ville where CONTAINS(NAME,'?TROOZ%') > 0;

在我的桌子上:

  • 1679 TROIS-PONTS FOSSE(列日)
  • 1680 TROIS-PONTS WANNE(列日)
  • 2717 特鲁兹(列日)

此查询将只返回前两个结果,而不是 2717。

为什么没有返回TROOZ??

我阅读了http://docs.oracle.com/cd/B19306_01/text.102/b14218/cqoper.htm 的文档 而且我不明白为什么最后一个条目更合乎逻辑,因为在文本中找到的整个查询没有返回。

注意:CONTAINS(NAME,'?TROOZ%') 为名称“TROOZ (LIEGE)”返回 0

【问题讨论】:

  • 你试过CONTAINS(NAME,'?TROIS%')。从fuzzy 的文档中,我了解到输入应该与正确的拼写匹配,然后Oracle 的算法会从中生成模糊变化。
  • 我尝试获得 TROOZ 条目,所以尝试使用 TROIS 没有帮助:(

标签: oracle fuzzy-search


【解决方案1】:

回答有点晚了,但如果你考虑一下这会有所帮助。

select id, name from ville where CONTAINS(NAME, 'definescore(fuzzy(TROOZ, 1, 10, weight), relevance)', 1) > 0;

这里我们使用definescore算子基于relevance,然后使用fuzzy根据相似度weight扩展搜索结果,这里我们将扩展结果限制为 10,以最低分数 1 为例。

Fuzzy search

Define score for relevance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多