2016-04-19 6 views
0

. В моем случае использования требуется запрос для нашего эластичного поискового домена с завершающими подстановочными знаками. Я хотел получить ваше мнение о лучших методах обработки таких подстановочных знаков в запросах.Как справиться с шаблонами в поиске эластичного поиска. Структурированные запросы

Как вы думаете, добавив следующие положения является хорошей практикой для запросов:

"query" : { 
    "query_string" : { 
     "query" : "attribute:postfix*", 
     "analyze_wildcard" : true, 
     "allow_leading_wildcard" : false, 
     "use_dis_max" : false 
    } 
} 

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

ответ

0

Если у вас есть возможность изменить тип отображения и параметры индекса, правильным способом является создание пользовательского анализатора с edge-n-gram token filter, который будет индексировать все префиксы поля attribute.

curl -XPUT http://localhost:9200/your_index -d '{ 
    "settings": { 
     "analysis": { 
      "filter": { 
       "edge_filter": { 
        "type": "edgeNGram", 
        "min_gram": 1, 
        "max_gram": 15 
       } 
      }, 
      "analyzer": { 
       "attr_analyzer": { 
        "type": "custom", 
        "tokenizer": "standard", 
        "filter": ["lowercase", "edge_filter"] 
       } 
      } 
     } 
    }, 
    "mappings": { 
     "your_type": { 
      "properties": { 
       "attribute": { 
        "type": "string", 
        "analyzer": "attr_analyzer", 
        "search_analyzer": "standard" 
       } 
      } 
     } 
    } 
}' 

Затем, когда вы индексировать документ, значение attribute поля (например) postfixing будет индексироваться в следующих лексем: p, po, pos, post, postf, postfi, postfix, postfixi, postfixin, postfixing ,

Наконец, вы можете легко запросить поле attribute для значения postfix, используя простой запрос match. Не нужно использовать недопустимый шаблон в запросе строки запроса.

{ 
    "query": { 
    "match" : { 
     "attribute" : "postfix" 
    } 
    } 
} 
+0

Помогла ли это? Вам нужно больше информации? – Val

 Смежные вопросы

  • Нет связанных вопросов^_^