gpt4 book ai didi

java - 提高 Solr 查询超过 1600 万条推文的速度

转载 作者:行者123 更新时间:2023-12-04 05:18:22 25 4
gpt4 key购买 nike

我使用 Solr (SolrCloud) 来索引和搜索我的推文。大约有 1600 万条推文,索引大小约为 3 GB。这些推文会在它们出现时实时编入索引,以便启用实时搜索。目前我使用 lowercase我的推文正文字段的字段类型。对于搜索中的单个搜索词,大约需要 7 秒,并且随着每个搜索词的添加,搜索所需的时间线性增加。 3GB 是为 solr 进程分配的最大 RAM。示例 solr 搜索查询如下所示

tweet_body:*big* AND tweet_body:*data* AND tweet_tag:big_data

关于提高搜索速度的任何建议?目前我只运行 1 个包含整个推文集合的分片。

最佳答案

查询tweet_body:*big*预计表现不佳。尾随通配符很容易,使用 ReversedWildcardFilterFactory 可以轻松处理前导通配符。然而,两者都必须扫描每个文档,而不是能够利用索引来定位匹配的文档。结合这两种方法只会让你搜索:

tweet_body:*big tweet_body:big*

这不是一回事。如果您确实必须搜索带有前导和尾随通配符的术语,我建议您将数据索引为 N-gram。

我以前不知道它,但似乎是 lowercase字段类型是小写过滤的 KeywordAnalyzer。这不是你想要的。这意味着整个字段被视为单个标记。适用于标识号等,但不适用于您希望对其执行全文搜索的文本正文。

所以是的,你需要改变它。 text_general大概是合适的。这将索引一个正确标记的字段,您应该能够执行您正在寻找的查询:
tweet_body:big AND tweet_body:data AND tweet_tag:big_data

您将不得不重新索引,但无法避免。没有好的、高效的方法可以对关键字字段执行全文搜索。

关于java - 提高 Solr 查询超过 1600 万条推文的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com