[英]How can I perform a "begin with" search in Elasticsearch
我正在嘗試使用 elasticsearch 執行文本搜索應用程序,它執行“開始於”搜索(如 match_phrase_prefix),但我還需要在我的分析器上應用一些過濾器,例如“詞干分析器”和“停止”。
這是我要搜索的示例文檔:
我的目標是,當我搜索“brown fox”時,應用程序應該返回 1) 和 3)
我嘗試使用關鍵字作為帶有“詞干分析器”和“停止”過濾器的標記器,它只對我文檔的最后一個詞有效,例如:“The brown fox runs quickly”將變為“the brown fox runs quick”,但是我需要標記整個句子。
您需要應用標記化,因此您將對句子中的每個單詞應用詞干提取。
在settings.analysis.analyzer
,您可以添加此自定義英語分析器:
{
"custom_english": {
"filter": [
"stopwords",
"english_possessive_stemmer",
"lowercase",
"english_stemmer"
],
"tokenizer": "standard"
}
}
然后你可以在你的mappings
中像這樣在你的字段定義中添加一個子字段,如下所示:
{
"my_field": {
"type": "keyword",
"ignore_above": 8191,
"fields": {
"en": {
"analyzer": "custom_english",
"type": "text"
}
}
}
}
然后你可以這樣查詢:
{
"query": {
"prefix": {
"my_field.en": {
"value": "brown fox"
}
}
}
}
這將匹配 1、3。前綴查詢確保您只匹配值的開頭。 但是當你用brown foxes
查詢時,你也會得到 1。這就是詞干提取的力量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.