Как упоминалось в комментариях, методы, которые вы используете, когда условие истинно, применимы только к документам Google и будут терпеть неудачу, если вы попытаетесь использовать их в других типах файлов.
Чтобы это просто не добавить второе условие в вашем коде:
if (filename == targetFile && file.getMimeType()=="application/vnd.google-apps.document") {
с вышеуказанной модификацией вы больше не получите ошибок, но есть вероятность, что вы не сможете открыть цель, которую вы пытались, потому что она не была правильный тип mime.
Вы должны взглянуть на раздел окончательного руководства по анализу , так как это очень важно для понимания поведения вашего индекса.
По умолчанию ваше поле анализируется с использованием стандартный анализатор , который разбивает слова на дефис.
. Очень простой анализатор, который следует понимать, представляет собой анализатор пробелов , который разбивает входные данные на токены в пробелах символов.
Вы можете попробовать этот пример:
POST /solution
{
"mappings":{
"doc": {
"properties":{
"subject": {
"type": "string",
"analyzer": "whitespace"
}
}
}
}
}
GET /solution/_analyze
{
"field": "subject",
"text": "This is about abdominal-scan"
}
, который выводит:
{
"tokens": [
{
"token": "This",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
},
{
"token": "is",
"start_offset": 5,
"end_offset": 7,
"type": "word",
"position": 1
},
{
"token": "about",
"start_offset": 8,
"end_offset": 13,
"type": "word",
"position": 2
},
{
"token": "abdominal-scan",
"start_offset": 14,
"end_offset": 28,
"type": "word",
"position": 3
}
]
}
Вы можете видеть, что ваш дефис сохраняется в этом случае.