O problema
Erro SolrWriter ao criar documento: SolrInputDocument (fields) não corresponde aos valores relacionados ao campo
Inicialmente, alterei o campo de tipo de
campo do banco de dados para usar o tipo tinyint, apenas para descobrir que esse tipo não está no Solr
! ! ! Como mostrado acima, os tipos de dados suportados pelo Solr! ! !
Existem alguns tipos de dados semelhantes ao texto_ * prefixados na parte de trás, todos os tipos de separador de palavras padrão (como o separador de palavras IK em chinês baixado), que não são enfatizados aqui! !
Duas soluções
Adicionar parâmetros após o URL
& serverTimezone = UTC & tinyInt1isBit = false
Cuidado para escapar do símbolo & ...
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/nsi_database?useSSL=false&serverTimezone=UTC&tinyInt1isBit=false"
user="root"
password="123456"/>
<document>
<entity name="nsi_post_category_item" query="SELECT * FROM `nsi_post_category_item` WHERE is_check = 1">
<field column="item_id" name="itemId"/>
<field column="title" name="title"/>
<field column="summary_desc" name="summaryDesc"/>
<field column="content" name="content"/>
<field column="post_type" name="postType"/>
<field column="post_icon" name="postIcon"/>
<field column="comment_num" name="commentNum"/>
<field column="share_num" name="shareNum"/>
<field column="watch_num" name="watchNum"/>
<field column="collect_num" name="collectNum"/>
<field column="tag" name="tag"/>
<field column="open_id" name="openId"/>
<field column="avatar" name="avatar"/>
<field column="nick_name" name="nickName"/>
<field column="is_check" name="isCheck"/>
</entity>
</document>
</dataConfig>
Análise:
- O parâmetro padrão de tinyInt1isBit é true e o comprimento de armazenamento do tipo tinyint do Mysql é 1. O Solr converterá o tipo desse campo em tipo booleano
- Defina como false para converter dados tinyint no tipo Inteiro, que corresponde ao tipo pint no Solr, para que possa ser importado para a biblioteca de índices Solr
- Evitar o tamanho do formato do número de armazenamento do tipo tinyint, o tamanho do arquivo é 1, o tinyint (1) também será convertido para True / False por padrão em Java.
- O parâmetro tinyInt1isBit faz distinção entre maiúsculas e minúsculas quando usado
Não use tinyint
Não use tinyint, em vez disso, use int type
- Modifique o arquivo de configuração conf / managed-schema.xml do seu núcleo
- Corresponde ao atributo mysql e ao tipo de campo no Solr
- varchar corresponde a string e também pode corresponder ao tipo de tokenizer text_ik
- pint ou plong correspondente a int
Último passo
Reinicie o Solr e verifique o log
A posição da linha vermelha geralmente imprime um log de erros ou algumas informações anormais ao sincronizar dados
Recarregar
Quando você altera o arquivo de configuração, ou alterar os nomes dos tipos de dados ou campo no MySQL deseja sincronizar e, em seguida, ou para adicionar novos dados de índice da biblioteca, eu me lembro que pode resolver muitos problemas Recarregar
atenção quando há múltiplos Core, a Escolha o núcleo que você deseja alterar