ElasticSearch子串搜索

laximzn5  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(405)

我需要实现子串搜索。它应该像“ctrl+f”一样工作,如果一个单词的子字符串与之匹配,就高亮显示它。
搜索将仅由两个字段执行:
名称-不超过255个字符
id-不超过200个字符
然而,记录的数量将相当大,大约有一百万条。
到目前为止,我使用的查询字符串搜索关键字 Package 通配符,但它肯定会导致性能问题以后一旦数量的记录将开始增长。
你有什么建议我如何做更明智的性能解决方案?

vcudknz3

vcudknz31#

在大索引上使用前导通配符进行搜索会非常慢
避免以*或?开头?。这会增加查找匹配项所需的迭代次数,降低搜索性能。
正如文档中所写,通配符查询非常慢。如果您希望在查询时快速,最好使用ngram策略。如果要通过部分匹配、单词前缀或任何子字符串匹配进行搜索,最好使用n-gram标记器,这将改进全文搜索。
ngram标记器首先在遇到指定字符列表中的一个字符时将文本分解为单词,然后发出指定长度的每个单词的n-gram。
请仔细阅读这个答案,其中包括一个使用ngrams进行部分匹配的工作示例

相关问题