我遵循了本教程,并为索引实现了以下内容:
'analysis' => array(
'analyzer' => array(
'indexAnalyzer' => array(
'type' => 'custom',
'tokenizer' => 'whitespace',
'filter' => array('lowercase', 'mySnowball')
),
'searchAnalyzer' => array(
'type' => 'custom',
'tokenizer' => 'whitespace',
'filter' => array('lowercase', 'mySnowball')
)
),
'filter' => array(
'mySnowball' => array(
'type' => 'snowball',
'language' => 'English'
)
)
)
您可以尝试使用映射字符筛选器删除连字符:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-mapping-charfilter.html
类似这样的内容将删除连字符:
{
"index" : {
"analysis" : {
"char_filter" : {
"my_mapping" : {
"type" : "mapping",
"mappings" : ["-=>"]
}
},
"analyzer" : {
"custom_with_char_filter" : {
"tokenizer" : "standard",
"char_filter" : ["my_mapping"]
}
}
}
}
}
问题内容: 我有一个产品目录,正在使用Elastica客户端在ElasticSearch中建立索引。我是ElasticSearch BTW的新手。 我的目录中有一些名称相同的产品。但是,如果输入,它们将不会出现在搜索结果中。 我该怎么办才能弹出结果? 我已经按照本教程进行了学习,并为索引实现了以下内容: 问题答案: 您可以尝试使用映射字符过滤器删除连字符: http://www.elasticse
我想请你帮忙。我想搜索一个词里面的标题和内容。下面是结构 查询字符串如下所示,我希望在类似“15-game”的文本中搜索“15-g”: 请接受我的道歉,如果我重复的问题,但我无法找到发生了什么,为什么它没有返回任何结果。 我已经看过了: 提前谢谢你!
问题内容: 弹性搜寻1.6 我想索引包含连字符的文本,例如U-12,U-17,WU-12,T恤…,并能够使用“简单查询字符串”查询来搜索它们。 数据样本(简体): 所以我去了这个映射: 使用以下查询进行搜索: 什么有效: “ U-12”,“ U ”,“ t ”,“ ts *” 什么不起作用: “ U-”,“ u-1 ”,“ t-”,“ t-sh ”,… 看来char过滤器未在搜索字符串上执行?我该
问题内容: 我想使用ElasticSearch搜索文件名(而不是文件的内容)。因此,我需要找到文件名的一部分(完全匹配,没有模糊搜索)。 示例: 我有以下名称的文件: 现在,我要搜索以获取前两个文件。 搜索或应返回除最后一个文件名以外的所有文件名。 如何使用ElasticSearch做到这一点? 这是我测试过的,但始终返回零结果: 问题答案: 您粘贴的内容存在各种问题: 1)不正确的映射 创建索引
问题内容: 我想以查询其他字段的相同方式将多值字段的值查询为单独的“字段”。我有这样的数据结构: 我的查询如下所示: 仅当值包含我的整个查询时,“类型”和“运算符”才能完美匹配单个值字段。例如,查询“ foo two”不会返回匹配项。 我希望标签字段的行为相同。现在,查询“东西”将在不应该返回匹配项时返回匹配项,因为没有字段或标记值将两个单词都包含在一个值中。有没有办法做到这一点? 编辑 Val的
问题内容: 我无法在Elasticsearch中以特殊字符结尾/开头的字符进行搜索。就像“ 123456!” 我的映射是 它给我错误,我可以在搜索查询(或映射)中做什么,以便特殊字符将被视为搜索字符串的一部分? 问题答案: 由于您的字段是(好!),请尝试用双引号引起来进行完全匹配: 这样做的另一种方法是在查询中设置分析器(但请务必转义,因为它是保留字符(对于操作员)