我在我的索引中配置了巴西葡萄牙語的停用詞。但是如果我搜索術語“ios”(這是一門 ios 課程),則會回傳一堆其他檔案,因為術語“nos”(巴西停用詞)似乎被識別為模糊查詢的有效術語。
但是,如果我僅按“nos”一詞進行搜索,則不會回傳任何內容。我不會期望 ios 課程被模糊查詢回傳?我很困惑。
有沒有其他選擇。這里的主要目的是當用戶搜索ios時,不會回傳帶有“nos”之類的停用詞的檔案,而我可以為用戶進行其他更復雜的搜索保持模糊性。
查詢示例:
GET /index/_search
{
"explain": true,
"query": {
"bool" : {
"must" : [
{
"terms" : {
"document_type" : [
"COURSE"
],
"boost" : 1.0
}
},
{
"multi_match" : {
"query" : "ios",
"type" : "best_fields",
"operator" : "OR",
"slop" : 0,
"fuzziness" : "AUTO",
"prefix_length" : 0,
"max_expansions" : 50,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : true,
"fuzzy_transpositions" : true,
"boost" : 1.0
}
}
],
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
}
部分解釋查詢:
"description": "weight(corpo:nos in 52) [PerFieldSimilarity], result of:",
帶有停用詞配置的影像

謝謝
我嘗試添加前綴長度,但我希望忽略停用詞。
uj5u.com熱心網友回復:
我相信按語言正確處理停用詞的方法如下:
PUT idx_teste
{
"settings": {
"analysis": {
"filter": {
"brazilian_stop_filter": {
"type": "stop",
"stopwords": "_brazilian_"
}
},
"analyzer": {
"teste_analyzer": {
"tokenizer": "standard",
"filter": ["brazilian_stop_filter"]
}
}
}
},
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "teste_analyzer"
}
}
}
}
POST idx_teste/_analyze
{
"analyzer": "teste_analyzer",
"text":"course nos advanced"
}
查找術語“nos”已洗掉。
{
"tokens": [
{
"token": "course",
"start_offset": 0,
"end_offset": 6,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "advanced",
"start_offset": 11,
"end_offset": 19,
"type": "<ALPHANUM>",
"position": 2
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523553.html
