Изменение типа данных поля Apache Solr из Strings - PullRequest
0 голосов
/ 20 ноября 2018

Одно из полей в ядре solr содержит строки типа данных, но оно не может вместить длину значения в поле, поэтому я хочу изменить его на другой тип данных, который может соответствовать строкам,

К сожалению text_general не помогает, так как он похож на строку, а не на строку.Есть ли другой тип данных, который может помочь?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Независимо от того, является ли поле многозначным или нет (то, что вы описываете), оно настроено на значение по умолчанию для типа поля, но это значение может быть переопределено для каждого поля, которое вы определяете,Таким образом, разница между string и strings заключается только в том, что последний имеет multiValued="true" по умолчанию, в то время как string имеет multiValued="false" по умолчанию.

При определении поля вы можетепереопределите это, чтобы указать, разрешает ли ваш документ многозначность определенного поля, независимо от того, что говорится в определении типа поля.

<field name="string_field" type="string" multiValued="true"/>

будет иметь то же значение, что и тип поля strings, поскольку это явно разрешаетполе должно иметь несколько значений в поле.

Таким образом, в вашем случае вы можете использовать text_general - для него может быть не установлено значение multiValued по умолчанию, но вы можете настроить его при определении поля.

<field name="your_field_name" type="text_general" multiValued="true" />

Разница между text_general и string заключается в том, что к text_general применена цепочка анализа и токенизатор, так что текст разбивается внутри на более мелкие токены.

У Lucene есть жесткое ограничение на 32768 символов на токен, и это ограничение, которое вы применяете при индексировании большего значения в поле string.

Если вы собираетесьхранить большие капли в Solr, я бы порекомендовал поместить их в Amazon S3 или другое хранилище данных и вместо этого сохранять сгенерированный идентификатор в Solr.Таким образом, размер индекса остается меньшим, и вы убираете накладные расходы при объединении сегментов.

0 голосов
/ 21 ноября 2018

text_general - это массив строк.Так что если вы ищете тип, похожий на строковый тип данных, который похож на массив - text_general должен делать.

Еще одно преимущество text_general - это позволяет токенизацию;Строки нет.

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