【问题标题】:Replacing ID with another will degrade performance in Solr?用另一个替换 ID 会降低 Solr 的性能吗?
【发布时间】:2015-03-15 00:26:32
【问题描述】:

我正在使用 Solr 4.10.2。我已经构建了索引文档。在 Schema.xml 中,我删除了 ID 字段并将其替换为 ngram 字段并将 ngram 字段设为 唯一键。

我有一个问题 - 我什么时候会在 Solr 上进行 搜索 查询。搜索的性能伤害吗?它还会影响 Document 缓存

【问题讨论】:

    标签: performance solr indexing unique-key


    【解决方案1】:

    不,我认为这不会影响 Solr 的性能。当您将自己的字段定义为 uniqueKey 时,它将根据给定的键索引文档。我在我的一个项目中使用了相同的方法,我们使用 documentId 作为 uniqueKey。

    【讨论】:

    • 好的。你确定。您索引了多少数据?检索您搜索的文档需要多少时间?
    • 我已经索引了 6K 个文档,每个文档包含 400 个字段。检索查询通常取决于您的查询。如果您搜索所有索引数据,则需要几毫秒。
    • 我已经索引了 10 万份文档,其中每个文档只有 2 个字段。当我第一次在索引数据中搜索一个单词时,大约需要 2 秒。下一次,当我搜索相同的查询时,它需要毫秒,因为那个时候,文档保存在缓存中。这就是为什么。 您是否使用过任何技术来搜索查询?
    【解决方案2】:

    使用 ngram 字段作为唯一键是一个非常糟糕的主意。唯一键字段不能是“标记化”类型,否则多个单独的标记组成一个键,这将导致误报匹配。您应该只使用字符串或 int/long 字段类型作为唯一键的类型。

    当然,性能也会受到一定影响,因为 ngram 字段会创建许多标记而不是一个,但与误报和重复文档等其他问题相比,这可以忽略不计。

    【讨论】:

    • 我没有使用过 ngram 字段。 ngram 只是字段的名称,其字段类型是字符串。您正在以错误的方式检查问题。所以,告诉我它会降低性能
    • 不,使用任何其他字符串字段都没有关系。无论调用什么 uniqueKey 字段,性能都是相同的。
    • 我非常抱歉@Shalin。实际上,我的 ngram 字段不是字符串类型。我已经定义了自己的 fieldType="textSpell",其中包含两行 <tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.ShingleFilterFactory" maxShingleSize="3" minShingleSize="2" outputUnigrams="true"/>。现在,请告诉我它会降低性能吗?
    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多