0

看起来 SOLR 正在考虑什么应该是有效的 Unicode 字符是无效的,并删除它们。

我通过打开查询调试来“证明”这一点,以查看解析器对我的查询做了什么。这是一个例子:

查询 = 'ァ☀' (\u30a1\u2600)

这是 SOLR 用它做的事情:

'debug':{ 'rawquerystring':u'\u30a1\u2600', 'querystring':u'\u30a1\u2600', 'parsedquery':u'(+DisjunctionMaxQuery((text:\u30a1)))/no_coord' , 'parsedquery_toString':u'+(文本:\u30a1)',

如您所见,“ァ”没问题,但它吃掉了“黑太阳”角色。

我还没有尝试过所有的 Block,但我已经确认它也不喜欢 ⛿ (\u26ff) 和 ♖ (\u2656)。

我将 SOLR 与 Jetty 一起使用,因此不应该应用各种 TomCat 问题 WRT 字符编码。

4

1 回答 1

1

这很可能与分析器有关。我没有看到任何具体说明这些字符的处理方式,但它们可能被StandardAnalyzer(或您可能使用的任何分析器)非常视为标点符号,因此不会出现在最终查询中。 StandardAnalyzer实现UAX-29 中设置的规则,Unicode 文本分割,以便将输入分离为标记。

于 2013-11-04T18:13:00.213 回答