В чем разница между фразой и термином в структурированных запросах?
Как phrase
и term
разные в запросе Structured
?
У меня есть эти данные в моем домене CloudSearch:
{
"guid": 9,
"operating_systems": [
"12345", "123"
],
"manufacturer": "sealand",
"model": "gaming tree whale plum",
"identifier": "gaming tree whale plum",
"type": "computer",
"created_at": "1982-10-14T14:43:54Z"
}
"model"
- это тип text
, "identifier"
- тип literal
, "created_at"
- тип date
.
Сделайте несколько запросов:
(phrase field=model 'tree whale') match
(phrase field= identifier 'tree whale') no match
(phrase 'tree whale') match
(phrase field=created_at '1982-10-14T14:43:54Z') match (this shouldn't match according to docs)
(term field=model 'tree whale') match
(term field= identifier 'tree whale') no match
(term 'tree whale') match
(term field=created_at '1982-10-14T14:43:54Z') match
Есть ли что-нибудь, что я могу сделать с phrase
, который я не могу сделать с term
и наоборот?
Ответы
Ответ 1
Между синтаксисом и использованием term
VS phrase
очень мало различий. Тем не менее, поведение поиска при обработке phrases
может быть настроено способами terms
не может, что может быть использовано для повышения производительности:
- разрешенные операторы
- phraseFields
- phraseSlop
terms
предназначены для сопоставления текстовых полей, где phrases
предназначены для более сложных поисков.
Пропустите веб-документацию и просто прочитайте весь PDF файл:
http://docs.aws.amazon.com/cloudsearch/latest/developerguide/cloudsearch-dg.pdf
Ответ 2
В случае, если кто-то задается вопросом, оказывается, что поиск по фразе соответствует всей фразе, в то время как термин поиск совпадает с терминами, которые могут быть фразой, но могут быть словами, распространяющимися вокруг документа. Пример:
Текст
"model": gaming tree whale plum
Удерживается:
(phrase field=model 'tree whale') match
(phrase field=model 'tree plum') no match
(term field=model 'tree whale') match
(term field=model 'tree plum') match