<< Click to Display Table of Contents >> Администрирование (Linux) > Общесистемные настройки > Настройка полнотекстового поиска Устранение неисправностей поиска |
Суть проблемы
Пользователь не может найти объект системы по фрагменту текста. При этом слова из поискового запроса есть в содержимом объекта.
Возможные причины и способы решения
•у пользователя отсутствуют права доступа на документ, задачу, задание или уведомление;
•последняя версия документа не содержит текстовой информации. Например, если последняя версия – документ в формате PDF без текстового слоя, архив или видеоролик, то поиск по тексту не найдет документ;
•размер документа превышает 75 МБ;
•в индексе нет текста документа;
•задано мало критериев поиска.
В индексе нет текста документа
Чтобы проверить, проиндексирован ли текстовый слой объекта системы, откройте панель управления Kibana, перейдите на страницу Dev Tools и в инструменте Console выполните запрос:
GET rxsearch_document_tenant_dev/_search
{
"query": {
"bool": {
"filter": {
"term": {
"entity_value_id": 1
}
}
}
}
}
Где:
•entity_value_id – ИД документа;
•rxsearch_document_tenant_dev – название индекса, в котором ищется информация о документе.
Запрос возвращает информацию о документе в формате JSON:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.0,
"hits" : [
{
"_index" : "rxsearch_document_tenant_dev",
"_type" : "_doc",
"_id" : "NYi_j28BBijfGBg2R0Pj",
"_score" : 0.0,
"_source" : {
"body" : {
"extension_str" : "docx",
"size_long" : 41758,
"event_date" : "2020-01-15T17:57:44.4846227+04:00",
"version_value_id" : 330,
"event_date_ms_long" : 1578665664484,
"text" : {
"content_type" : "application/vnd.openxmlformats-
officedocument.wordprocessingml.document",
"language" : "ru",
"content" : """Текст документа. . .""",
"content_length" : 21
}
...
Если в поле hits.total.value указано значение 0, то объект не проиндексирован или поисковый запрос содержит ошибку. В этом случае запустите индексирование объектов по ИД. Если непроиндексированные объекты обнаруживаются массово, запустите фоновый процесс «Проверка индексации документов» или «Проверка индексации задач, заданий и уведомлений».
Если в поле hits.total.value указано значение больше 0 и при этом не заполнено поле hits.body.text, то объект проиндексирован, но его текст не попал в индекс. В примере выше поля заполнены, поэтому документ можно найти по тексту. Вероятная причина, по которой текст может не попасть в индекс – ошибки при работе сервиса индексации. Для решения проверьте сообщения в лог-файле сервиса и устраните ошибки.
При выполнении поиска Elasticsearch возвращает первые 10 000 документов. Документ может не оказаться среди найденных, даже если проиндексирован. Например, такое может быть, если пользователь в поисковом запросе указал только одно слово, и оно встречается в десятках тысяч документов.
Для решения укажите дополнительные критерии в поисковом запросе.
© Компания Directum, 2024 |