当前位置: 首页 > 知识库问答 >
问题:

Solr DataImport中的汉字问题

殳飞扬
2023-03-14

我在Solr3.4中的中文/日文文本索引有困难。我正在使用DIH导入数据,连接块是

<dataSource type="JdbcDataSource"
    driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost/db_development?useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8"
    user="user"
    useUnicode="true"
    characterEncoding="UTF-8"
    encoding="UTF-8"
    password="password"
    zeroDateTimeBehavior="convertToNull"
    name="app" />

此字段的fieldtype defn为

  <fieldType name="text_commongrams" class="solr.TextField">
    <analyzer>
      <charFilter class="solr.HTMLStripCharFilterFactory" />
      <tokenizer class="solr.ICUTokenizerFactory" />
      <filter class="solr.ICUTransformFilterFactory" id="Traditional-Simplified"/>
      <filter class="solr.ICUFoldingFilterFactory"/>
      <filter class="solr.ASCIIFoldingFilterFactory"/>
      <filter class="solr.ICUNormalizer2FilterFactory" name="nfkc_cf" mode="compose"/>
      <filter class="solr.RemoveDuplicatesTokenFilterFactory" />
      <filter class="solr.TrimFilterFactory" />
      <filter class="solr.LowerCaseFilterFactory" />
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
    <filter class="solr.SynonymFilterFactory"
      synonyms="synonyms.txt"
      ignoreCase="true"
      expand="true" />
    <filter class="solr.CommonGramsFilterFactory"
      words="stopwords_en.txt"
      ignoreCase="true" />
    <filter class="solr.StopFilterFactory"
      words="stopwords_en.txt"
      ignoreCase="true" />
    <filter class="solr.WordDelimiterFilterFactory"
      generateWordParts="1"
      splitOnNumerics="0"
      generateNumberParts="1"
      catenateWords="1"
      catenateNumbers="1"
      catenateAll="0"
      preserveOriginal="1" />
  </analyzer>
</fieldType>

MySQL字符编码详细信息如

+--------------------------+-----------------------------------------+
| Variable_name            | Value                                   |
+--------------------------+-----------------------------------------+
| character_set_client     | latin1                                  |
| character_set_connection | latin1                                  |
| character_set_database   | latin1                                  |
| character_set_filesystem | binary                                  |
| character_set_results    | latin1                                  |
| character_set_server     | utf8                                    |
| character_set_system     | utf8                                    |
| character_sets_dir       | /opt/local/share/mysql5/mysql/charsets/ |
+--------------------------+-----------------------------------------+

我使用Java参数-dfile.encoding=utf-8启动Solr。

输入文本为JavaOne Tokyo 2012当我将其导入到Solr中,并使用ID查询该文档时,我看到的文本为JavaOne Tokyo 2012??®?™:??,©?????????

谁能告诉我我哪里错了?

共有1个答案

壤驷高旻
2023-03-14

所以我最后不得不修改我的MySQL表,将字符串存储在UTF8中。有关如何将现有表从latin1转换为utf8的详细信息可以在这里找到。

 类似资料:
  • 问题内容: 我正在尝试使用Java文件从数据库中检索一些UTF-8 uni编码汉字。当我这样做时,字符将作为问号返回。 但是,当我显示数据库中的字符(使用)时,这些字符将正常显示。当我在包含汉字的Java文件中打印字符串时,它们也会正常打印。 我在Eclipse中遇到了这个问题:运行程序时,字符被打印为问号。但是,当我以UTF-8格式保存Java文件时,此问题已解决。 当前在终端中运行“ loca

  • 本文向大家介绍mysql 中如何取得汉字字段的各汉字首字母,包括了mysql 中如何取得汉字字段的各汉字首字母的使用技巧和注意事项,需要的朋友参考一下

  • 我试图从数据库中检索一些UTF-8 uni编码的汉字,使用Java文件。当我这样做时,字符返回为问号。 这是相当奇怪的它将如何只是有时显示的字符。有人对此有解释吗?或者更好的是,如何修复这一点,以使字符正确显示?

  • 主要内容:分治算法解决汉诺塔问题,汉诺塔问题的代码实现汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。梵天命令一个叫婆罗门的门徒将所有的圆盘移动到另一个柱子上,移动过程中必须遵守以下规则: 每次只能移动柱子最顶端的一个圆盘; 每个柱子上,小圆盘永远要位于大圆盘之上; 图 1 给您展示了包含 3 个圆盘的汉诺塔问题:   图 1 汉诺塔问题 一根柱子上摞

  • 我正在使用以下设置: > pdfbox 2.0.15 目标:呈现包含中文字符的pdf 问题:java.lang.IllegalArgument异常:U 674E在此字体的编码中不可用 我已经试过了: > 使用不同的字体支持汉字。最新的一款是KTC普通版。ttf 将字体设置为unicode,如下所述:Java:使用PDFBox将国家字符写入PDF,但是不推荐使用loadTTF方法。 使用Arial-

  • 我正在使用pdfbox 1.8,我试图用中文填写pdf表格,但我得到的只是奇怪的字符。我得到了一个ttc文件(uming.ttc),并使用字体伪造导出了ttf文件(现在我正在尝试只使用导出的字体之一)。 字体的加载是使用 我正在使用以下代码编写pdf字段(我在stackoverflow中找到了它,但目前我找不到它) 我读到pdfbox2.0支持Unicode我需要使用这个新版本吗? 使用font-