gpt4 book ai didi

java - Lucene 多值字段 - 将 TextField 与 StringField 混合

转载 作者:行者123 更新时间:2023-11-30 07:16:20 25 4
gpt4 key购买 nike

我使用一个多值字段查询我的索引。在索引期间,该字段是使用几个字段创建的,其中一些是 TextField,一些是 StringField

我遇到的问题是,通过使用带有多个单词的查询来查询索引,我得到了:java.lang.IllegalStateException:字段“someField”在没有位置数据的情况下被索引;无法运行 PhraseQuery (term=someTerm)

我更改了创建多值字段的方式,仅使用了 TextField,问题消失了。

看来 TextFieldStringField 不应该混合在一个多值字段中。我对吗?谁能给我解释一下为什么(或为什么不)?

最佳答案

StringField 明确设置为仅存储文档 ( IndexOptions.DOCS_ONLY ),这会忽略存储的频率和位置。由于它实际上是一个关键字字段,并且多个单词将存储为单个标记,因此对其运行短语查询实际上没有意义。

虽然将不同的字段类型混合到同一个字段中当然是可能的,但这似乎给我带来了困惑和不可预测的结果。我建议对添加到特定字段的类型保持一致,如果您需要添加的值具有明显不同的逻辑来管理它们,例如 TextField 与 StringField 之间的差异,将它们放在不同的字段中可能是一个更好的主意在索引中。

如果这种情况发生在某种包罗万象的便利字段中(例如 this SOLR example 中的 text 字段),那么使用 TextField 可能是一个合理的想法。

关于java - Lucene 多值字段 - 将 TextField 与 StringField 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17044778/

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