Компонент Solr Spellchecker (Suggester) для фразы в нескольких полях (с разными токенизаторами)

Я пытаюсь реализовать функцию автоматического предложения с помощью solr, используя несколько полей, которые должны поддерживать разные токенизаторы. Сценарий, который я хочу выполнить, выглядит следующим образом:

Есть два поля: автор (KeywordTokenizer) и тема (StandardTokenizer), которые копируются в автозаполнение (используется как поле проверки орфографии).

<field name="author" type="phrase" indexed="true" stored="true" multiValued="false"/>
<field name="subject" type="text_general" indexed="true" stored="true"/> 
<field name="autosuggest" type="text_general" indexed="true" stored="true"     multiValued="true"/>
<copyField source="*" dest="autosuggest"/>
<fieldType name="phrase" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
     <tokenizer class="solr.KeywordTokenizerFactory" />
     <filter class="solr.LowerCaseFilterFactory" />
     <filter class="solr.RemoveDuplicatesTokenFilterFactory" />         
   </analyzer>
</fieldType>

Примеры значений: Тема — «Dell boost Widescreen UltraSharp 3007WFP»; Автор - "Дель Стиллер"

Поисковый запрос: solr/select?q=de; Ожидаемый результат: Dell, Del Stiller

Результат зависит от типа поля, назначенного autosuggest. Однако мне нужно скопировать токены из каждого поля в «autosuggest» вместо копирования значений, а затем токенизатор, создающий новые токены для сопоставленных значений поля.

Я использую SOLR 4.5.1


person user3160369    schedule 04.01.2014    source источник


Ответы (1)


что здесь происходит, так это то, что store=true также сохраняет исходное значение в целевом поле.

В вашем простом случае может быть достаточно использования TerminalsComponent, посмотрите, как это сделать здесь, где там написано "Использовать в автозаполнении". Это будет работать, поскольку термины возвращаются этим компонентом, а не сохраненные значения.

person Persimmonium    schedule 04.01.2014