【发布时间】:2015-12-30 22:20:57
【问题描述】:
我的 ES 索引中有一些包含表情符号图标的文章。我想搜索包含特定表情符号字符的文章。我使用 compose.io 作为我的 ES 提供程序,通过 ElasticHQ 我可以看到数据中的表情符号 - 它们在 OS X 中呈现为图标,所以我假设 unicode 存储正确。但是,当我运行此查询时,我没有得到任何结果。如果我运行纯文本搜索,我会得到我的结果。我正在使用 mongoosastic。
Article.search({query_string: {query: "????"}},
{fields: "title"},
function(err, results) {
if (err) {
console.log("error: " + err);
} else {
console.log("results: " + JSON.stringify(results));
}
});
//results: {"took":6,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}
【问题讨论】:
-
潜在相关:stackoverflow.com/questions/19773786/…。 (使用分析 API 进行测试:elastic.co/guide/en/elasticsearch/reference/1.4/…)。
-
谢谢彼得,我得到以下信息: curl -XGET -u dev-user:pass123 'foo.com:10724/_analyze?analyzer=standard' -d 'foo' {"tokens":[{"token":"foo" ,"start_offset":0,"end_offset":3,"type":"
","position":1}]} curl -XGET -u dev-user:pass123 'foo.com:10724/_analyze?analyzer=standard' -d '? ???' {"tokens":[]} 这对我来说意义不大。我假设我需要安装某种可以处理 unicode 的分析器? -
听起来(来自 Solr 帖子)Lucene 标准分析器可能不会将 emoji 范围解释为有效的 Unicode 字符(并将它们去除)。
-
感谢您的意见。我在 elastic.co 论坛上进行了一些对话,是的,标准分析器不能做这种事情。我现在所做的(等待编写我自己的分析器)是将表情符号编码为字符串并将它们编入索引。
-
酷。打算建议快速修复! (确保为您的编码使用一个新字段,以便您可以单独提升它们。)如果您最终选择修补 Lucene,请考虑提供补丁。
标签: node.js elasticsearch mongoosastic