我需要实现子串搜索。它应该像“ctrl+f”一样工作,如果一个单词的子字符串与之匹配,就高亮显示它。搜索将仅由两个字段执行:名称-不超过255个字符id-不超过200个字符然而,记录的数量将相当大,大约有一百万条。到目前为止,我使用的查询字符串搜索关键字 Package 通配符,但它肯定会导致性能问题以后一旦数量的记录将开始增长。你有什么建议我如何做更明智的性能解决方案?
vcudknz31#
在大索引上使用前导通配符进行搜索会非常慢避免以*或?开头?。这会增加查找匹配项所需的迭代次数,降低搜索性能。正如文档中所写,通配符查询非常慢。如果您希望在查询时快速,最好使用ngram策略。如果要通过部分匹配、单词前缀或任何子字符串匹配进行搜索,最好使用n-gram标记器,这将改进全文搜索。ngram标记器首先在遇到指定字符列表中的一个字符时将文本分解为单词,然后发出指定长度的每个单词的n-gram。请仔细阅读这个答案,其中包括一个使用ngrams进行部分匹配的工作示例
1条答案
按热度按时间vcudknz31#
在大索引上使用前导通配符进行搜索会非常慢
避免以*或?开头?。这会增加查找匹配项所需的迭代次数,降低搜索性能。
正如文档中所写,通配符查询非常慢。如果您希望在查询时快速,最好使用ngram策略。如果要通过部分匹配、单词前缀或任何子字符串匹配进行搜索,最好使用n-gram标记器,这将改进全文搜索。
ngram标记器首先在遇到指定字符列表中的一个字符时将文本分解为单词,然后发出指定长度的每个单词的n-gram。
请仔细阅读这个答案,其中包括一个使用ngrams进行部分匹配的工作示例