vespa - 在非英语版本中保留 Vespa 中的词序

标签 vespa

我正在为 Vespa 创建一个架构,主要用于英语,但有两个藏文 Wylie 音译的字段,如下所示

'jam dpal smra ba'i seng ge la bstod pa ut+pal dmar po'i do shal

通常,用户希望匹配每个标记并保留词序,最好是在字段的开头。

例如,要查找上面的字段,用户可以输入“'jam dpal smra ba'i seng ge”。他们不会欣赏这些代币以不同顺序出现的结果,即使这在 BM25 中排名很高。后备仍需要 BM25。

您能给我一个按此顺序排名的架构字段/排名表达式的示例吗:

  1. 字段开头完全匹配
  2. 任意位置精确匹配
  3. bm25

当然,我会关闭词干提取。此外,应该保留撇号和不太重要的加号。

我特别阅读了 Vespa 文档的 Schema Reference,但没有找到解决方案。

最佳答案

我得到了最好的结果

field wylie type string {
    indexing: index | summary
    index: enable-bm25
    stemming: none
}
rank-profile native_rank_and_wylie {
    first-phase {
        expression: nativeRank(title, body) + fieldMatch(wylie).earliness + fieldMatch(wylie).longestSequence * 0.4
    }
}

请注意,longestSequence 未标准化,会对分数产生很大影响。

关于vespa - 在非英语版本中保留 Vespa 中的词序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74269989/

相关文章:

Vespa:我们可以聚合嵌套字段吗?

vespa - 在 vespa 中禁用缓存

nosql - Vespa 与其他 no-sql 数据库

vespa - 无法在自托管 Vespa 实例中索引文档

vespa - 在 vespa 中使用 Wandsearcher 的任何示例? (经过加权集查询)

java - 将 Vespa 扩展为 500 QPS 以进行搜索

arrays - Vespa 搜索查询(在数组上)即使在从数组中删除元素后也会给出命中

vespa - 是否可以在搜索定义中的 JSON 对象内创建 JSON 数组,并且所有字段都可以在 vespa.ai 中搜索?

vespa - 查询排名配置文件时,Recall 不返回任何内容

vespa - 如何更改 Vespa 中最近邻居搜索的排名顺序?