我使用下面的代码来查询Elasticsearch索引,但我没有找回与给定短语匹配的所有文档。当我们搜索特定的特定文档时它返回特定文档例如,如果我要求短语'groovy',它不会带回我所有的文件名字段groovy。但如果我要搜索“Help.groovy”,它会让我回到Help.groovy。感谢有人可以帮助我。
private def performSearchUsingElasticSearch(String q) {
def escaped = QueryParser.escape(q.toLowerCase().trim())
def result = elasticSearchService.search(escaped)
return result
}
示例文档
"hits": [
{
"_index": "a.b.c.d",
"_type": "svnInfo",
"_id": "183",
"_score": 1,
"_source": {
"author": "abc1200",
"name": "VendorSpec.groovy",
"svnUrl": "http://svnrepo/tools/VendorSpec.groovy",
"date": "Wed May 13 09:35:05 EDT 2015"
}
}, {
"_index": "a.b.c.d",
"_type": "svnInfo",
"_id": "184",
"_score": 1,
"_source": {
"author": "abc1200",
"name": "Help.groovy",
"svnUrl": "http://svnrepo/tools/Help.groovy",
"date": "Wed May 13 09:35:05 EDT 2015"
}
答案 0 :(得分:1)
标准分析不会在字母之前和之后的期间中断代币(请参阅4.1 of UAX #29部分,尤其是规则WB6 and WB7)。
您可能需要考虑使用其他分析器。 simple
可能是个不错的选择。它不是实现那个文本分割标准,而是简单地将标记定义为相邻字母的序列,看起来可能是你想要的。