2017-02-13 17 views
2

У меня возникает некоторая путаница между доступным типом поля. string vs strings и int vs ints и подобные другим типам данных.Строка Fieldtype vs string

В чем разница между следующими 4?

<field name="string_multi" type="string" multiValued="true" indexed="true" stored="true"/> 
<field name="string_single" type="string" indexed="true" stored="true"/> 
<field name="strings_multi" type="strings" multiValued="true" indexed="true" stored="true"/> 
<field name="strings_single" type="strings" indexed="true" stored="true"/> 

Учитывая, что у меня есть документ, что я должен объявить для моего поля имени hashtags?

String multivalued или strings multivalue или strings without multivalue,?

{ 
     "polarity":0.0, 
     "text":"RT @socialistudents: Vlad - we go to NUS conference not just as individuals but as members of Socialist Students #SocStu17", 
     "created_at":"Sun Feb 12 19:28:34 +0000 2017", 
     "hashtags":[ 
     "hashtag1", 
     "hashtag2" 
     ], 
     "subjectivity":0.0, 
     "retweet_recount":4, 
     "id":830861171582439424, 
     "favorite_count":0 
} 

ответ

3

Ну, если вы говорите о типах полей по умолчанию, которые сделаны при использовании схемы Solr по умолчанию, если вы на самом деле смотреть на определение FieldType он говорит, что это:

<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true" /> 
<fieldType name="strings" class="solr.StrField" sortMissingLast="true" multiValued="true" docValues="true" /> 

Отредактировано : 2-й пример должен быть strings вместо string

Таким образом, они фактически имеют один и тот же класс (класс строк по умолчанию solr solr.StrField), поэтому они одного типа данных. Единственное отличие состоит в том, что «строки» многозначны, что означает, что вы можете хранить несколько дискретных значений в одном поле.

В вашем примере кажется, что ваши данные хештегов - это всего лишь массив отдельных значений хэштега, поэтому, поскольку вы хотите хранить несколько отдельных строк в одном поле, тогда «строки» будут выбором, так как это значение multiValued.

+2

Путаница была при определении «имени поля». Если вы можете объявить атрибут 'multiValued' как таковой' '. Ну, они оказываются одинаковыми. Просто немного запутано и делает 'multiValued' во время' field name 'избыточным. Поскольку 'multiValued' будет определяться полем типа –

+0

Да, правильно, извините, я пропустил 's' на втором. Исправлено: – Jayce444

+0

Да, вы также можете объявить «многозначным» на поле. Поэтому, учитывая вашу структуру данных хэштегов, вы можете поместить 'multiValued =" true "' в свое определение поля – Jayce444