如何elasticsearch/lucene 使用有限状态转换器使预先输入/建议搜索更快

kro*_*nak 5 python lucene typeahead search-suggestion fst

我正在尝试构建以下数据的预输入搜索。

    ID数据串
    id_1“这是第一行”
    id_2“这是第二行”

在查询这些数据时,我将给出如下字符串:

    “第一行”-->输出:id_1(匹配字符串的ID)
    “两行”-->输出:id_2
    “这是第 num 行” --> 输出 id_1 id_2 (多个结果)

我尝试使用倒排索引和 n 元语法(前缀)来处理数据字符串中的每个标记。但对于大型数据集,n-gram 索引速度很慢(查询在某种程度上已经足够好了)。现在我在谷歌搜索时得到了一些想法,lucene 有 Suggester 类,它在预输入搜索中非常快,并使用 FST(有限状态转换器)来实现快速前缀搜索。

如何在我的场景中使用 FST 来加快预输入搜索速度?