我已使用摄取附件处理器插件在弹性搜索中为pdf文件编制了索引,现在我根据PDF中的可用内容搜索文件。
例如,我的pdf中有一些类似的内容。
Hello I m Karthikeyan. My mail id Karthikeyan@gmail.com, My mob no 4573894833.
在使用Java API进行搜索时,能够像以下进行搜索。
搜索
Karthikeyan@gmail.com
可以获取文件。
但,
如果我搜寻,
@gm
表示无法获取该文件,希望我应该获取该文件,因为该文件具有我的搜索关键字@gm
。
我该怎么做。 ?
我使用的令牌生成器分别为min_gram
和max_gram
3个。
请找到我使用过的以下Java API,但没有一个能给我预期的结果。
QueryStringQueryBuilder attachmentQB = new QueryStringQueryBuilder("@gm");
请找到我下面的映射详细信息。
PUT attach_local
{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer": {
"type": "custom",
"tokenizer": "my_tokenizer",
"char_filter": [
"html_strip"
],
"filter": [
"lowercase",
"asciifolding"
]
}
},
"tokenizer": {
"my_tokenizer": {
"type": "ngram",
"min_gram": 3,
"max_gram": 3,
"token_chars": [
"letter",
"digit"
]
}
}
}
},
"mappings": {
"doc": {
"properties": {
"attachment": {
"properties": {
"content": {
"type": "text",
"analyzer": "custom_analyzer"
},
"content_length": {
"type": "long"
},
"content_type": {
"type": "text"
},
"language": {
"type": "text"
}
}
},
"resume": {
"type": "text"
}
}
}
}
}
答案 0 :(得分:0)
您可以看到ES如何使用
标记您的搜索文本POST /attach_local/_analyze
{
"analyzer": "custom_analyzer",
"text": "@gm"
}
这将告诉您是否删除@字符。如果是这样的话,那将可以解释这种现象,因为您的倒排索引具有所有三字母组合,并且您正在搜索一个二元组。