gpt4 book ai didi

solr - 方面查询的巨大时间差异

转载 作者:行者123 更新时间:2023-12-01 06:09:50 25 4
gpt4 key购买 nike

我有一个带有 ca 的 SOLR 数据库。 70M 文件。某些查询返回大约 300 个文档。与

  • facet.field=A 只需要 4 毫秒,
  • facet.field=B 需要 800 毫秒才能返回!

我的模式有错误吗?可以做得更快吗?

<fieldtype name="B_type" class="solr.TextField" positionIncrementGap="100"    
sortMissingLast="true" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.StandardFilterFactory" ignoreCase="true" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.StandardFilterFactory" ignoreCase="true" />
</analyzer>
</fieldtype>

<field name="A" type="string" indexed="true" stored="true" multiValued="false" />
<field name="B" type="B_type" indexed="true" stored="false" multiValued="true" />

最佳答案

字段 Astring 类型,适合用作分面。您的字段 B 已被分析,您去掉了特殊字符并将其小写,这不太适合用作方面。后面的事情是在应用 StandardFilterFactory 时完成的。

Solr's Wiki关于切面有一个有趣的部分

Because faceting fields are often specified to serve two purposes, human-readable text and drill-down query value, they are frequently indexed differently from fields used for searching and sorting:

  • They are often not tokenized into separate words
  • They are often not mapped into lower case
  • Human-readable punctuation is often not removed (other than double-quotes)
  • There is often no need to store them, since stored values would look much like indexed values and the faceting mechanism is used for value retrieval.

如您所见,您缺少中间的两点,小写并删除特殊字符。

根据 Indexing Fields with SOLR and LowerCaseFilterFactory 中的建议你应该在你的模式中引入一个新字段,它应该是 string 类型,并通过 copyField 与你的字段 B 保持同步。那个新字段应该用于分面并且应该更快。我们通常使用后缀命名此类字段,例如 B_raw

由于您确实有 7000 万份文档,因此最好提前使用一个子集对其进行测试以节省您的时间。

关于solr - 方面查询的巨大时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20636375/

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