Запрос ElasticSearch для возврата документа с этим форматом текста - PullRequest
0 голосов
/ 27 февраля 2019

Мы экспериментировали с нашим экземпляром ElasticSearch, чтобы создать запрос, который найдет документ с текстом в неструктурированных форматах.Этот конкретный документ доставляет нам очень трудное время.

Это содержимое поля в документе под названием "Text."

PUBLIC NOTICE – September 2013 NORTH DAKOTA BOARD OF NURSING 919 S 7th Street, Suite 504, Bismarck, ND 58504-5881; (701) 328-9777; Web Site www.ndbon.org PLEASE SHARE THIS INFORMATION WITH YOUR NURSING STAFF The North Dakota Board of Nursing took the following action during the September 19, 2013 meeting: Disciplinary/Board Action Action Name Registration # City/State Time frame Penalty fee Reprimand *Anderson, Merry 106815UAP Minot, ND N/A $200 * Practice without *Buboltz, Ann RN Applicant Redwood Falls, MN N/A $200 License/ Dockter, Amanda L13872 Kensal, ND N/A $900 Registration Jaffe, James R39137 Elkhart, IN N/A $600 *Miller, Cassandra RN Applicant Wahpeton, ND N/A $1,000 *Parker-Sundquist, Charla LPN Applicant Grand Forks, ND N/A $200 Extension of Cofer, Kelly R32728 & L11293 Grand Forks, ND 3 years $1,500 Previous Wattendorf.

Обратите внимание на конецтекстовый блок, фраза «Паркер-Сандквист, Чарла».

Нам нужно, чтобы этот документ возвращался в наборе результатов при поиске любого варианта имени Charla Parker-Sundquist.Прямо сейчас мы можем вернуть документ, если будем искать по Чарла Паркер-Санквист, или если мы будем искать по Паркер-Сандквист, Чарла.Однако мы попытались выполнить поиск по Charla R Parker-Sundquist (включая среднюю букву), и документ не возвращается.

Нам нужно настроить этот запрос (или создать дополнительный), который позволит внести небольшие изменения, такие как добавлениесредний инициал и все еще возвращает этот документ, , но , без запроса, в котором говорится, что должны быть возвращены все документы с хотя бы одним из условий поиска.Я полагаю, , что нам нужно было бы сделать с этим запросом, - это сказать, что мы хотим вернуть любые результаты, в которых присутствуют как минимум два из поисковых терминов и которые находятся в двух словах рядом друг с другом.

Вот запрос, как у нас сейчас.При этом соответствующий документ будет возвращен при поиске по двум вариантам, упомянутым выше.Но как только мы вводим в запрос среднюю букву, документ не возвращается.Пожалуйста, помогите мне понять, как мы можем настроить этот запрос, не сказав, что ЛЮБОЙ из 3 слов может быть в документе для его возврата.

   {
        "size": 150,
        "query": {
            "function_score": {
                "query": {
                    "bool": {
                        "must": {
                            "bool": {
                                "should": [
                                    {
                                        "match_phrase": {
                                            "text": {
                                                "query": "charla r parker-sundquist",
                                                "slop": 3
                                            }
                                        }
                                    }
                                ]
                            }
                        }
                    }
                }
            }
        }
   }

РЕДАКТИРОВАТЬ : согласно некоторым исследованиям, мы также пытались выполнить этот запрос, но этот вообще не возвращает никаких результатов, поэтому я не уверен, что синтаксис для этого выключен.

{
    "size": 150,
    "query": {
        "function_score": {
            "query": {
                "bool": {
                    "must": {
                        "bool": {
                            "should": [
                                {
                                    "span_near": {
                                        "clauses": [
                                            {
                                                "span_multi": {
                                                    "match": {
                                                        "fuzzy": {
                                                            "text": {
                                                                "value": "charla",
                                                                "fuzziness": 2
                                                            }
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "span_multi": {
                                                    "match": {
                                                        "fuzzy": {
                                                            "text": {
                                                                "value": "parker-sundquist",
                                                                "fuzziness": 2
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        ],
                                        "in_order": false,
                                        "slop": 2
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 27 февраля 2019

Чтобы получить полную настройку поиска, вы можете изменить токенизатор индексации и использовать собственный анализатор .: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html

Тогда у вас есть дополнительные параметры поиска, и вы также можете использовать запрос query_string.https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html

Некоторые примеры: Несколько токенизаторов в одном Custom Analyzer в Elasticsearch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...