Tôi đang cố gắng để tìm kiếm cơ sở dữ liệu của tôi và có thể sử dụng thuật ngữ lọc/chữ thường trên nhưng tôi đã nhận thấy trong khi query
's áp dụng phân tích, tôi không thể tìm ra cách để áp dụng một máy phân tích chữ thường trên tìm kiếm được lọc. Dưới đây là các truy vấn:Elasticsearch lọc chữ thường tìm kiếm
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"term": {
"language": "mandarin" // Returns a doc
}
},
{
"term": {
"language": "Italian" // Does NOT return a doc, but will if lowercased
}
}
]
}
}
}
}
}
Tôi có một loại languages
mà tôi đã lowercased sử dụng:
"analyzer": {
"lower_keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
và một ánh xạ tương ứng:
"mappings": {
"languages": {
"_id": {
"path": "languageID"
},
"properties": {
"languageID": {
"type": "integer"
},
"language": {
"type": "string",
"analyzer": "lower_keyword"
},
"native": {
"type": "string",
"analyzer": "keyword"
},
"meta": {
"type": "nested"
},
"language_suggest": {
"type": "completion"
}
}
}
}
Vì vậy, nếu tôi muốn tho hạn được lowercased tôi sẽ thay đổi tokenizer thành một chữ thường và lập chỉ mục tất cả mọi thứ? – Maruf
Không, nó đã được hạ thấp trong khi lập chỉ mục do bộ lọc chữ thường. Vấn đề là bạn cần phải sử dụng một loại truy vấn cũng sẽ phân tích - Bộ lọc thuật ngữ không. –
Bạn sẽ thấy hiệu suất tốt hơn nếu bạn vừa hạ thấp đầu vào của mình để có thể tiếp tục sử dụng Bộ lọc cụm từ qua sử dụng Bộ lọc truy vấn? – odyth