Я использую ElasticSearch для индексации документов.
Мое сопоставление:
"mongodocid": {
"boost": 1.0,
"store": "yes",
"type": "string"
},
"fulltext": {
"boost": 1.0,
"index": "analyzed",
"store": "yes",
"type": "string",
"term_vector": "with_positions_offsets"
}
Чтобы выделить полный текст, я устанавливаю number_of_framgments
в 0.
Если я выполняю следующий запрос строки типа Lucene:
{
"highlight": {
"pre_tags": "<b>",
"fields": {
"fulltext": {
"number_of_fragments": 0
}
},
"post_tags": "</b>"
},
"query": {
"query_string": {
"query": "fulltext:test"
}
},
"size": 100
}
Для некоторых документов в наборе результатов длина выделенного полного текста меньше, чем сам полный текст.Поскольку я устанавливаю number_of_fragments
в 0 и добавляем pre_tags
/ post_tags
, этого не должно произойти.
Теперь происходит странное поведение: если я ищу только один из неисправных элементов, выполняя это:
{
"highlight": {
"pre_tags": "<b>",
"fields": {
"fulltext": {
"number_of_fragments": 0
}
},
"post_tags": "</b>"
},
"query": {
"query_string": {
"query": "fulltext:test AND mongodocid:4d0a861c2ebef6032c00b1ec"
}
},
"size": 100
}
тогда все отлично работает.
Есть идеи?