2017-02-21 29 views
0

Я создаю скопированное поле с цветовыми синонимами из поля описания цвета, и это работает. Я в состоянии выполнять поиск с помощью скопированного поля как этогоНеопределенное имя x в предложении выбора, даже когда x сохраняется

/solr/my_keyspace.my_table/select?q=color_base:white 

Но поле не отображается в результатах поиска, и если добавить поле в список полого, как этот

/solr/my_keyspace.my_table/select?q=color_base:white&fl=color_base 

I получить ошибку

Undefined name color_base in selection clause 

Вот моя схема - я думал, что хранится = «истинный» будет делать трюк, но это не так. Я просто хочу увидеть поле color_base в результатах поиска.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<schema name="autoSolrSchema" version="1.5"> 
    <types> 
     <fieldType class="org.apache.solr.schema.TextField" name="ColorField"> 
      <analyzer> 
       <tokenizer class="solr.KeywordTokenizerFactory"/> 
       <filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="color_synonyms.txt" tokenizerFactory="solr.KeywordTokenizerFactory"/> 
      </analyzer> 
     </fieldType> 
     <fieldType class="org.apache.solr.schema.StrField" name="StrField"/> 
    </types> 
    <fields> 
     <field indexed="true" multiValued="false" name="color_description" stored="true" type="StrField" docValues="true"/> 
     <field indexed="true" multiValued="true" name="color_base" stored="true" type="ColorField" docValues="true"/> 
     <copyField source="color_description" dest="color_base"/> 
    </fields> 
    <uniqueKey>(year, make, base_model)</uniqueKey> 
</schema> 

ответ

0

Я понял, что я не могу добавить результаты поиска с помощью анализаторов, которые были моей целью. Анализаторы предназначены только для улучшения возможностей поиска, но результаты не могут быть изменены Solr. Я должен был добавить новое поле в базовый db (Cassandra) и отобразить значения, которые мне нужны. Извлеченный урок - Solr предназначен для поиска ТОЛЬКО, а не для изменения/обновления/добавления наборов результатов.

0

похоже, что это проблема в DSE. Но, если вы просто хотите, чтобы получить color_base вернулся, вы можете получить точно такой же результат, задавая color_description быть возвращены:

/solr/my_keyspace.my_table/select?q=color_base:white&fl=color_description 

Даже если color_description и color_base различных типов, сохраненное значением является изначальным значением, к Solr, а не результаты, полученные после анализа, поэтому вы получите одинаковые данные, запросив любой из них.

EDIT: о Ваш комментарий ... Вы должны быть в состоянии фасет на анализируемом значении:

/select?q=your query&facet=true&facet.field=color_base 

Но я не могу проверить это прямо сейчас, у меня нет никакого copyField в моей DSE схеме, попробуйте и, надеюсь, вы не столкнетесь с аналогичной проблемой, как с fl ...

+0

Это то, что я видел - так что, я думаю, я пытаюсь получить результат анализатора. Разве это невозможно? Я хочу, чтобы синонимы отображались в результатах поиска. –

+0

Конечной целью для меня является фасет на анализируемых токенах - есть ли способ сделать это? –

+0

@BrentonKlassen обновил мой ответ – Persimmonium