我正在为 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。
您能给我一个按此顺序排名的架构字段/排名表达式的示例吗:
- 字段开头完全匹配
- 任意位置精确匹配
- 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/