ElasticSearch - La Recherche De L'Homme Noms

J'ai une grande base de données de noms, principalement à partir de l'Ecosse. Nous sommes actuellement à la production d'un prototype de remplacer une pièce de logiciel qui effectue la recherche. C'est toujours en production et nous visons à obtenir nos résultats aussi ferme que possible les résultats actuels de la recherche.

J'espérais que quelqu'un pourrait m'aider, je suis d'entrer dans une recherche en Élastique de Recherche, la requête est "Michael Heaney", je reçois quelques sauvages résultats. Le courant de recherche renvoie les deux principaux noms de famille, ce sont - le "Heaney" et "Heavey" tous avec le prénom de "Michael", je peux obtenir le "Heaney" les résultats d'Elastic Search cependant je ne peux pas obtenir "Heavey" et ES renvoie également à des personnes sans nom "Michael" cependant je comprends que c'est parce qu'elle est la partie de la requête floue. Je sais que c'est une étroite cas d'utilisation, comme c'est une seule recherche, mais l'obtention de ce résultat et de savoir comment je peux obtenir de l'aide.

Grâce.

Cartographie

{
   "jr": {
    "_all": {
        "enabled": true,
        "index_analyzer": "index_analyzer",
        "search_analyzer": "search_analyzer"
    },
    "properties": {
        "pty_forename": {
            "type": "string",
            "index": "analyzed",
            "boost": 2,
            "index_analyzer": "index_analyzer",
            "search_analyzer": "search_analyzer",
            "store": "yes"
        },
        "pty_full_name": {
            "type": "string",
            "index": "analyzed",
            "boost": 4,
            "index_analyzer": "index_analyzer",
            "search_analyzer": "search_analyzer",
            "store": "yes"
        },
        "pty_surname": {
            "type": "string",
            "index": "analyzed",
            "boost": 4,
            "index_analyzer": "index_analyzer",
            "search_analyzer": "search_analyzer",
            "store": "yes"
        }
     }
   }
}'

Paramètres D'Indexation

{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 0,
    "analysis": {
        "analyzer": {
            "index_analyzer": {
                "tokenizer": "standard",
                "filter": [
                    "standard",
                    "my_delimiter",
                    "lowercase",
                    "stop",
                    "asciifolding",
                    "porter_stem",
                    "my_metaphone"
                ]
            },
            "search_analyzer": {
                "tokenizer": "standard",
                "filter": [
                    "standard",
                    "my_metaphone",
                    "synonym",
                    "lowercase",
                    "stop",
                    "asciifolding",
                    "porter_stem"
                ]
            }
        },
        "filter": {
            "synonym": {
                "type": "synonym",
                "synonyms_path": "synonyms/synonyms.txt"
            },
            "my_delimiter": {
                "type": "word_delimiter",
                "generate_word_parts": true,
                "catenate_words": false,
                "catenate_numbers": false,
                "catenate_all": false,
                "split_on_case_change": false,
                "preserve_original": false,
                "split_on_numerics": false,
                "stem_english_possessive": false
            },
            "my_metaphone": {
                "type": "phonetic",
                "encoder": "metaphone",
                "replace": false
            }
        }
     }
   }
}'

Floue

{
"from":0, "size":100,
"query": {
    "bool": {
        "should": [
            {
                "fuzzy": {
                    "pty_surname": {
                        "min_similarity": 0.2,
                        "value": "Heaney",
                        "prefix_length": 0,
                        "boost": 5
                    }
                }
            },
            {
                "fuzzy": {
                    "pty_forename": {
                        "min_similarity": 1,
                        "value": "Michael",
                        "prefix_length": 0,
                        "boost": 1
                    }
                }
            }
        ]
     }
  }
}
InformationsquelleAutor Nathan | 2013-12-17