如何解决弹性搜索子串搜索
我需要通过子字符串实现搜索。如果它的子字符串匹配,它应该像“ CTRL + F”一样突出显示一个单词。
搜索仅由两个字段执行:
- 名称-不超过255个字符
- 编号-不超过200个字符
但是,记录数会非常大,大约一百万。
到目前为止,我使用按通配符括起来的关键字进行查询字符串搜索,但是一旦记录数量开始增长,肯定会导致性能问题。
您有什么建议,我将如何做更多针对性能的解决方案?
解决方法
在大索引上,搜索前导wildcards的过程将非常慢
避免以*或?开头的模式。这样可以增加迭代次数 需要找到匹配的词并降低搜索性能。
如文档通配符中所述,查询非常慢。 如果希望查询时间快,最好使用ngram策略。如果要按部分匹配,单词前缀或任何子字符串匹配进行搜索,最好使用n-gram tokenizer,这将改善全文搜索。
ngram分词器在遇到指定字符列表之一时首先将文本分解为单词,然后对指定长度的每个单词发射N-grams。
请仔细阅读此SO answer,其中包括一个使用ngram进行部分匹配的工作示例
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。