我正在尝试基于文档中的字符串数组构建一个建议程序,它类似于this one,但有一些区别:Elasticsearch的{{1}}并没有完全按照我的意愿(在过滤条件和前缀匹配的术语),因为我需要一个边缘ngram可以在句子的任何单词上使用,不区分重音。让我用一个例子来澄清。
假设我有以下索引文件。我想根据查询completion suggester
来建议“标签”(我不在乎文档本身,只关心与我的查询匹配的q
个)
tag
我想将前缀与重音公差匹配,以下查询/响应突出显示了我需要的内容
[
{ "tags": [ "société générale", "consulting" ] },
{ "tags": [ "big data", "big", "data"] },
{ "tags": [ "data" ] },
{ "tags": [ "data engineering" ] }
{ "tags": [ "consulting and management of IT" ] }
]
或q = "societe"
应该返回q = "societe generale"
->不区分重音符号[ "société générale" ]
应该返回q = "big data"
->前缀“ big”和“ data”都必须在字符串中[ "big data" ]
应该返回q = "data"
->句子中任何位置(但作为前缀)[ "big data", "data", "data engineering" ],
不应返回任何内容(不是前缀)q = "ata"
应该返回q = "IT consulting"
-> [ "consulting and management of IT" ]
的两个前缀都应该匹配,而与顺序无关如果我使用常规的q
映射器+建议,
completion
除了(2),(4)和(3)的1/3结果外,这些情况几乎没有起作用
我可以构建满足我的要求和上面给出的示例的自定义建议程序或自定义搜索查询吗?