Предложение от solr, включая значение другого поля, которое не упоминается для создания предложения - PullRequest
0 голосов
/ 03 ноября 2018

Я настроил компонент подсказки solr (7.5.0), используя AnalyzingInfixLookupFactory, и он работает нормально.

Однако я хочу получить значение поля, отличное от поля предложения (из которого генерируется предложение), включая фразу предложения. Например, я сохранил «Taylor Swift» как «полное_имя» и «T-Swizz» в поле «nick_name» в документе solr. Теперь, если я хочу предложение для "Swiz" , оно должно вернуть термин "T-Swizz" и другой термин "Taylor Swift" (который хранится в другом поле того же документа) вместе.

Вот мои поля для каждого документа в Solr:

<field name="full_name" type="textToken" indexed="true"
    stored="true" multiValued="true" />
<field name="nick_name" type="textToken" indexed="true" stored="true"
    multiValued="true" />

<fieldType class="solr.TextField" name="textToken"
        positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.StandardFilterFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
        </analyzer>
</fieldType>

Вот мой поисковый компонент:

<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
        <str name="name">mySuggester1</str>
        <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
        <str name="dictionaryImpl">DocumentDictionaryFactory</str>
        <str name="field">nick_name</str>
        <str name="buildOnStartup">false</str>
        <str name="buildOnCommit">true</str>
        <str name="suggestAnalyzerFieldType">text</str>
        <str name="queryAnalyzerFieldType">text_suggest</str>
    </lst>
</searchComponent>

<fieldtype name="text_suggest" class="solr.TextField">
        <analyzer>
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.TrimFilterFactory"/>
        </analyzer>
</fieldtype>

А вот мой обработчик запросов:

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

А вот один из моих документов в Solr:

{
        "full_name":["Taylor Swift"],
        "nick_name":["T-Swizz"],
        "id":"bf47cb69-b132-46b2-b3f3-7163f07ffdca",
        "_version_":1615396924172533760
}

Есть ли способ сделать это, или я делаю что-то не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...