我正在尝试创建一个搜索栏,其中最常见的查询将是“serviceOrderNo”。 “serviceOrderNo”不是数据库中的号码字段,它是字符串字段。示例:用Elasticsearch忽略前导零
000000007
000000002
WO0000042
123456789
AllTextss
000000054
000000065
000000874
最常见的格式只是一个由一定数量的零开始的整数。
如何设置Elasticsearch以便搜索“65”将匹配“000000065”?我也想优先考虑“serviceOrderNo”字段(我已经工作了)。下面是我在目前位置:
这样做是使用Lucene的味道经常exression查询{
"query": {
"multi_match": {
"query": "65",
"fields": ["serviceOrderNo^2", "_all"],
}
}
}
我才意识到我确实写的正则表达式自定义分析的真懒工作。我已经用三次测试的接班人更新了我的答案。 – IanGabes
我试过你的解决方案,它工作。谢谢!我正处于建立ES的早期阶段,所以我可以重新编制索引,因此您的解决方案运行良好。我也发布了一个不同的答案,但不确定我们要去哪一个。如果您发现ngram解决方案的任何缺点,请发表评论。 –