如何将 solr 建议组件和请求处理程序 XML 配置属性映射到 JSON 配置 API?

How to map solr suggest component and request handler XML config properties to JSON config API?

我正在尝试配置 suggest search component and request handler via Config API,我需要将 XML 配置属性映射到 JSON 配置 API 请求。

XML 建议搜索组件的配置:

<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
        <str name="name">mySuggester</str>
        <str name="lookupImpl">FuzzyLookupFactory</str>
        <str name="dictionaryImpl">DocumentDictionaryFactory</str>
        <str name="field">suggestTerm</str>
        <str name="suggestAnalyzerFieldType">text_suggest</str>
        <str name="buildOnStartup">false</str>
    </lst>
</searchComponent>

XML 建议请求处理程序的配置:

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
        <str name="suggest">true</str>
        <str name="suggest.count">10</str>
        <str name="suggest.dictionary">mySuggester</str>
    </lst>
    <arr name="components">
        <str>suggest</str>
    </arr>
</requestHandler>

这是我到目前为止尝试过的方法:

在配置中建议搜索组件 JSON 表示 API:

{
    "add-searchcomponent": {
        "name": "suggest",
        "class": "solr.SuggestComponent",
        "defaults": {
            "name": "mySuggester",
            "lookupImpl": "FuzzyLookupFactory",
            "dictionaryImpl": "DocumentDictionaryFactory",
            "field": "suggestTerm",
            "suggestAnalyzerFieldType": "text_suggest"
        }
    }
}

建议搜索处理程序 JSON 配置中的表示形式 API:

{
    "add-requesthandler": {
        "name": "/suggest",
        "class": "solr.SearchHandler",
        "startup": "lazy",
        "defaults": {
            "suggest": true,
            "suggest.count": 10,
            "suggest.dictionary": "mySuggester",
        },
        "components": [
            "suggest"
        ]
    }
}

我已经尝试过建议处理程序,但出现此错误:

"No suggester named mySuggester was configured"

这是我从 Config API 检索到的当前配置:

https://gist.github.com/stevenferrer/076f3074b376897086cf8a1bd5dbbf79

有什么我想念的吗?

问题出在搜索组件部分。我不小心从 Config API

复制了示例
{
    "add-searchcomponent": {
        ...
        "defaults": { // this is the issue
            ...
        }
    }
}

正确的配置是:

"add-searchcomponent": {
    "name": "suggest",
    "class": "solr.SuggestComponent",
    "suggester": { // from 'default' to 'suggester'
        "name": "mySuggester",
        "lookupImpl": "FuzzyLookupFactory",
        "dictionaryImpl": "DocumentDictionaryFactory",
        "field": "suggest",
        "suggestAnalyzerFieldType": "text_suggest"
    }
}