我正在使用ElasticSearch,并且具有以下索引映射:
post /my_index
{
"mappings": {
"medical_terms": {
"properties": {
"terms": {
"type": "string"
}
}
}
}
}
PUT my_index/medical_terms/1
{
"term": "Paracetamol tablets"
}
POST /my_index/_search?search_type=count
{
"suggest" : {
"text" : "paracetmo tabelts",
"simple_phrase" : {
"phrase" : {
"field" : "term",
"size" : 1,
"real_word_error_likelihood" : 0.95,
"max_errors" : 0.5,
"gram_size" : 2,
"highlight": {
"pre_tag": "<em>",
"post_tag": "</em>"
}
}
}
}
}
我该如何获得建议者在返回“扑热息痛片”时立即返回:
"suggest": {
"simple_phrase": [
{
"text": "paracetmo tabelts",
"offset": 0,
"length": 17,
"options": [
{
"text": "paracetmo tablets",
"highlighted": "paracetmo <em>tablets</em>",
"score": 0.24901225
}
]
}
]
我需要使用自定义分析器和字典吗?
问题是"max_errors" : 0.5,
参数。如果将其设置为0.8
它返回您的预期结果。我无法真正向您解释0.8为何有效的原因,因为实际上0.5意味着50%的术语可能写错了,这就是您的用例,但在某种程度上可以与0.8一起使用。也许在elasticsearch用户组中询问该信息?
问题内容: 我有以下查询,以便在搜索中增加模糊性。但是,我现在意识到,匹配查询不像match_phrase那样考虑搜索字符串中单词的顺序。但是,我无法获得match_phrase给我模糊的结果。有没有办法告诉比赛考虑单词之间的顺序和距离? 问题答案: 最终发现我需要使用查询的组合,从而对模糊性和倾斜度进行了大量的微调。我需要添加一个函数来手动标记我的短语并以编程方式添加到“子句”数组中:
我现在从Elasticsearch开始。我为一些EDIFACT消息(一种史前数据格式;-)编制了索引,内容如下: 当我搜索短语UNH 66304 CODECO: D:95B时,它应该只返回一次命中,但它似乎返回了包含任何这些单词的所有文件(并且UNH在每个文档中)。我的查询是: 我尝试添加“and”操作符,如下所示: 但是没有返回结果。我在这里读到了建议:搜索需要使用双引号的确切短语。我试过“查询
以下是可用的样本数据: null 示例查询: } 尝试了match_phrase_prefix,这也类似于prefix 示例查询:
我喜欢从Elasticsearch得到的结果,使用Edge-NGrams索引数据,并使用不同的分析器进行搜索。然而,我更希望匹配的较短术语比较长术语排名更高。 例如,以术语和为例。如果我使用术语执行查询,我会以相同的得分返回这两个文档。我希望的得分高于,因为closer与的匹配类似于Levenshtein距离算法。 设置索引: 插入文档: 搜索查询: 结果: 有谁知道我是如何将等较短的术语排在之前
问题内容: 我有一个Elasticsearch索引,其中有一些数据。我实现了该功能,所以当用户写错拼写的东西时,它可能会收到带有正确单词的建议。 之所以使用短语建议者,是因为我需要一些简短的短语(例如名称)的建议,问题是索引中不存在某些建议。 例: 我的问题是,索引中没有与指定建议匹配的词组,因此它向我推荐了不存在的词组,因此会给我一个未找到的搜索词。 我该怎么办?短语建议者是否应该为索引中实际存
我想从多个领域得到建议。我找不到这样的例子,所以也许这不是最好的主意,但我对你的意见很感兴趣。 要求是: GET查询适用于文本“fyodor”和“dostoevsky”,此示例仅适用于“fyodor” 启用筛选建议 我有什么想法可以实现这些?