Я буду считать, что ваши данные уже проиндексированы таким образом, что nite
, out
и nite out
являются жетонами, соответствующими любым документам.
Одним из способов сделать это было бы использование Match Query. В запросе Match используется анализатор для получения этого fuzziness
, который вы ищете. В этом конкретном случае мы могли бы использовать анализатор пробелов, чтобы получить результаты, которые вы ищете. Он рассмотрит запрос nite out
и разделит его на nite
и out
. Затем запрос соответствия будет искать эти два токена и оценивать по релевантности. Документ с nite out
проанализирован как как nite
, так и out
будет иметь более высокий балл, чем документ с nite
или out
самостоятельно.
Вот пример три документа, используя динамическое отображение:
индекса наших Документы
PUI {"value":"out"}
PUT {"value":"nite"}
PUT {"value":"nite out"}
Теперь построит запрос:
GET _search
{
"query": {
"match": {
"value": {
"query": "nite out",
"analyzer": "whitespace"
}
}
}
}
Мы на самом деле не нужны указать Здесь мы можем просто удалить эту строку (и предыдущую запятую). Запрос соответствия будет запускать текст запроса над анализатором, используемым полем, которое мы запрашиваем во время индекса. В нашем случае это стандартный анализатор, который разбивает текст на nite
и out
.
Результаты:
"hits": [
{
"_index": "test",
"_type": "test",
"_id": "1",
"_score": 0.2712221,
"_source": {
"value": "nite out"
}
},
{
"_index": "test",
"_type": "test",
"_id": "2",
"_score": 0.04500804,
"_source": {
"value": "nite"
}
},
{
"_index": "test",
"_type": "test",
"_id": "3",
"_score": 0.04500804,
"_source": {
"value": "out"
}
}
]
Я призываю вас читать над this link here, чтобы узнать о различных механизмах поиска в elasticsearch
может у пожалуйста скажите мне одну вещь, на самом деле я хочу «Nite из» для поиска так что строки точно совпадают с «конечным» ИЛИ «вне» в качестве префикса, пожалуйста, скажите мне, что то, что я могу использовать, будет действительно полезно и действительно спасибо за ваш ответ. –
К сожалению, я не уверен, что вы имеете в виду. Покажите некоторые примеры того, что вы хотите согласовать, и то, что вы не хотите согласовывать в своем вопросе. – IanGabes
ok, например, если я ищу «nite out», тогда ответы будут «nite *», где * означает anyting или ничего, OR «out *», короче говоря, я хочу, чтобы мой первый термин перед пробелом был точным, а второй - префиксом любой строки. Мне нужны оба ответа –