我刚开始做弹性搜索。我想通过子字符串搜索,它由数字和像“/”和“-”这样的符号组成。例如,我使用默认设置和一个索引字段创建索引:
curl -XPUT "http://localhost:9200/test/" -d ' {
"mappings" : {
"properties": {
"test_field": {
"type": "string"
}
}
}
} '
然后,我将一些数据添加到我的索引中:
curl -XPOST "http://localhost:9200/test/test_field" -d '{ "test_field" : "14/21-35" }'
curl -XPOST "http://localhost:9200/test/test_field" -d '{ "test_field" : "1/1-35" }'
curl -XPOST "http://localhost:9200/test/test_field" -d '{ "test_field" : "1/2-25" }'
curl -X GET "http://localhost:9200/test/_search?pretty=true" -d '{"query":{"query_string":{"query":"1/1*"}}}'
不返回命中。如果我移除星形符号,那么作为回应,我会看到两个点击:“1/1-35”和“1/2-25”。如果我尝试用反斜杠(“1\/1*”)转义斜杠符号,结果分别是相同的。
当我的查询中有“-”符号时,那么我必须转义这个Lucene特殊字符。因此我发送下一个搜索请求:
curl -X GET "http://localhost:9200/test/_search?pretty=true" -d '{"query":{"query_string":{"query":"*1\-3*"}}}'
并且返回解析错误。如果我把escape(“\\”)减去一倍,那我就没有结果了。
我尝试在我的自定义分析器中使用nGram过滤器,但它不适合搜索引擎的要求。
如果有人遇到这个问题,请回答。
默认分析器将在索引时从数据中删除所有特殊字符。您可以使用关键字分析器,或者在索引时不分析数据:
curl -XPUT "http://localhost:9200/test/" -d ' {
"mappings" : {
"properties": {
"test_field": {
"type": "string",
"index": "not_analyzed"
}
}
}
} '
我还没有为索引创建任何显式设置。谢了。
因此,默认情况下,field1是通过使用默认分析器进行弹性搜索来分析的。 我在下面搜索短语查询,但它没有返回任何结果。 因此弹性搜索短语查询不适合于OR运算符。知道为什么它不起作用吗?它是弹性搜索的一个限制,因为文本中有特殊的字符连字符(-)?
我刚开始使用hibernate lucene搜索。从几天以来,我一直致力于搜索关键字与特殊字符。我正在使用MultiFieldQueryParser进行精确短语匹配以及布尔搜索。但在这个过程中,我无法得到搜索关键字的结果,如“有1年以上的经验”,如果我没有在搜索关键字周围添加任何引号,那么我就得到了结果。所以我在执行lucene查询时观察到的是,它正在转义特殊符号(+)。我正在使用Standard
我有一个集合的联系人结构如下: 因为“susan@xpto.com”上的点 如何逃脱这点? 我尝试了和但没有成功。
我有一个问题与搜索的特殊字符在solr。我的文档有一个字段标题,有时它可以像泰坦尼克号-1999(它有字符-)。当我试图搜索索尔与"-"我收到一个400错误。我试图逃避这个角色,所以我尝试了像“-”和“\-”这样的东西。有了这些变化,solr不会用错误来回应我,但它会返回0个结果。 如何在solr admin中搜索具有该特殊字符(如“-”或“”?)的内容??? 问候 在这里更新您可以看到我当前的s
我有一个HashMap,里面有键和值。我想用字符串中映射的值替换键。 在字符串中,键被写成@keyname或@“keyname”,这些应替换为map.get(“keyname”) 假设我们的地图是这个 所以如果我们处理字符串“Hello world,Iam@key1 years old.”,它将变成“Hello world,Iam 2 years old.”。 我们可以用@“key1”代替@key