Как создать поле Catch-all Copy в Apache Solr? - PullRequest
0 голосов
/ 11 июля 2019

Используя интерфейс администратора Solr в Schema, я пытаюсь создать универсальное поле копирования, которое ищет все остальные поля.

При вводе * в качестве source и searchкак destination, интерфейс администратора возвращает:

команды обработки ошибок

Как можно создать универсальное поле копирования, которое ищет все другие поля?

1 Ответ

0 голосов
/ 11 июля 2019

В вашем schema.xml вы можете иметь следующие поля:

<field name="destination" type="text" indexed="true" stored="true" required="false"/> 
<field name="country" type="text" indexed="false" stored="true" required="false" /> 
<field name="city" type="text" indexed="false" stored="true" required="false" /> 
<field name="state" type="text" indexed="false" stored="true" required="false" />

country, city and state - поля источника.

затем можете добавить поле источника в пункт назначения следующим образом:

<copyField source="city" dest="destination"/> 
<copyField source="state" dest="destination"/> 
<copyField source="country" dest="destination"/> 

Или вы также можете использовать что-то похожее в качестве исходных полей

<field name="destination" type="text" indexed="true" stored="true" required="false"/>
<field name="country" type="text" indexed="false" stored="true" required="false"> 
<field name="city" type="text" indexed="false" stored="true" required="false" /> 
<copyField source="*_y" dest="destination"/>

Вы можете применить любой подходящий тип поля для своего поля destination

Вы также можетедобавьте тип поля text, как показано ниже.Это пример для вашей справки.Какой тип поля использовать, какие tokenizer использовать и filters использовать - все зависит от ваших требований.

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.LowerCaseFilterFactory" />              
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.LowerCaseFilterFactory" />              
    </analyzer>
</fieldType>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...