java - Solr查询非UTF-8字符

标签 java tomcat encoding utf-8 solr

我有一个名称字段定义为的 Solr 集群:

<field name="Name" type="token" indexed="true" stored="true" multiValued="true" omitTermFreqAndPositions="false"/>

<fieldType name="token" class="solr.TextField" omitNorms="true" positionIncrementGap="1">
        <analyzer>
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>

我在此字段中存储的数据为:

[[\"Želimir\", \"Färber\", \"\", \"\"]]
[[\"Jexper\", \"Testäverde\", \"\", \"\"]]

当我从 Solr 管理控制台查询此字段时,我能够获取文档。我在 Solr 之上有一个 java spring tomcat 应用程序,它构建 Solr 查询并针对 solr 运行它。当我尝试搜索 Java 应用程序时,我没有得到匹配的文档作为返回。

我的 java 应用程序以 UTF-8 编码查询 URL。 我的 java tomcat server.xml 有 URIEncoding="UTF-8"。

似乎没有任何帮助。解决此问题的任何想法都会有所帮助。

查询时在 Solr 日志中查询,

Admin console    : [[\"??elimir\",+\"F??rber\",+\"\",+\"\"]] --> Gives match
Java application : [[\"ESelimir\",+\"F????rber\",+\"\",+\"\"]] --> Gives no match

最佳答案

当您从 Java 应用程序调用 Solr 时,将 UTF-8 编码添加到请求 header 。

关于java - Solr查询非UTF-8字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47340905/

相关文章:

java - FFmpeg 从视频中提取 MP3 时出错

java - 为什么运行 Java 应用程序的机器几乎没有物理内存,但仍运行数周

java - 获取模板时的速度抛出 NPE

tomcat - 将 Tomcat 配置为服务(无 catalina.bat)

encoding - [JBoss AS7] : where to set environment properties

Java 等效于 C# AES 加密

java - 当我尝试使用另一个类的驱动程序实例来识别当前类中的元素时,我得到 Null.pointer.exception

java - 我为什么要学习和使用struts?

tomcat - Spring Boot应用Tomcat部署

postgresql - Postgres 使用 cp1252 编码?