【问题标题】:Apache Solr 6.5 Multi-valued field queryApache Solr 6.5 多值字段查询
【发布时间】:2017-09-28 23:31:32
【问题描述】:

我有一个带有架构的 Solr 6.5 索引: OrderId、OrderType、AirNumber 等等。

我的文档如下所示:

"OrderId":"-7878676767676",
"OrderType:"["Fee",
             "Insurance",
             "Air",
             "Fee"]
"AirNumber":["",
             "",
             "[2608620989121, 2608620989123]",
             ""],

当我查询AirNumber时,我无法检索到上述订单。

q=AirNumber:2608620989121

我的 AirNumber 架构是:

<field name="AirNumber" type="token" indexed="true" stored="true" multiValued="true" omitTermFreqAndPositions="false"/>

我尝试了不同的组合进行查询,我也尝试将 AirNumber 作为“字符串”,但没有任何效果。我错过了什么?

【问题讨论】:

    标签: apache solr multivalue


    【解决方案1】:

    对于字符串字段类型,它不起作用,因为此字段类型不会标记值,因此您需要查询确切的值“[2608620989121, 2608620989123]”。

    而对于“token”类型,这取决于你对fieldtype“token”的配置。

    使其在您的用例中工作的一种方法是配置令牌字段类型,如下所示:

    <fieldType name="token" class="solr.TextField" positionIncrementGap="100" multiValued="true">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory"/>
        </analyzer>
    </fieldType>
    

    这将使它对您的多值输入进行标记,以便您能够分别找到每个数字。

    【讨论】:

    • 您是否使用此配置重新索引内容?您可以在 solr Web UI 中的“分析”选项卡中查看它是如何索引和搜索该字段的
    • 我已经在 Solr 6.2.1 和 6.6.1 中对此进行了测试,并且在这两个版本中都有效。
    • 我插入了一个新文档并对其进行了测试。我为reindex重新加载了核心,仍然不起作用。
    • 这不是文本字段,我在那个字段中有数字。那会有什么不同吗?
    • 不。我已经用你的数据测试了它的工作原理。你能分享你的完整 schema.xml 和 solrconfig.xml 吗?
    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多