0

我想在 ElasticSearch 中创建一个索引,该索引存储具有一些字符串字段的特定类型的数据。语言是匈牙利语。

我使用以下正文运行了一个 HTTP PUT 命令:

{
    "settings" : {  
        "analysis" : {
            "analyzer" : {
                "hu" : {
                    "tokenizer" : "standard",
                    "filter" : [ "lowercase", "hu_HU" ]         
                }
            },
            "filter" : {
                "hu_HU" : {
                    "type" : "hunspell",
                    "locale" : "hu_HU",
                    "language" : "hu_HU"
                }
            }       
        }
    },
    "mappings": {
        "printedArticle": {
            "_source": {"enabled": false},
            "properties": {
                "_id": {"type": "string", "store": true},
                "mysqlid": {"type": "long", "store": false},
                "publishDate": {"type": "date", "format": "dateOptionalTime", "store": false},
                "title": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
                "lead": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
                "content": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
                "participants": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
                "authors": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
                "subtitle": {"type": "string", "analyzer": "hu", "analyze": true, "store": false}
            }
        }
    }   
}

然后我插入了一条带有一些测试文本的记录,如果我通过 Elastic API 使用 GET 请求运行搜索,如下所示:

http://localhost:9200/mf_pa/_search?q=MYTESTTEXT

只有当我的测试文本与我的记录中的一个单词相同时,它才会找到我的记录。

我尝试通过分析API分析一些类似的文本:

http://localhost:9200/mf_pa/_analyze?analyzer=hu&text=My text to tokenize

它正确地标记了我的测试文本。基于这个事实,我希望如果我将以前找到的令牌放入我的搜索查询中,它会找到记录,但事实并非如此。

对于一个英语示例,我会说我的文本是“难忘的”,而我的查询是“忘记”。我应该怎么做才能找到记录?

4

1 回答 1

0

如果分析器使用分析 API 进行测试,它也应该在映射中工作。以下是一些需要检查的事项:

  1. 确保映射输入成功。GET /mf_pa/_mapping

    例如,"analyze": true应该是"index": "analyzed"

  2. 确保测试文档实际上被正确索引为 type printedArticle

    GET /mf_pa/_search 应该返回您的测试文档显示 "_type": "printedArticle".

  3. 您还可以使用分析 API 来验证文本将如何针对特定字段进行分析(以确保分析器正确应用于该字段)

    例如GET /mf_pa/_analyze/?field=title&text=A kőszivű ember fiai

于 2015-09-23T15:48:19.257 回答