因此,从本页的文档来看,似乎我可以用令牌生成器、令牌过滤器和字符过滤器构建一个自定义瞬态分析器,并使用Analyze API对我的示例文本进行测试。
目标是,我想看看同义词令牌过滤器是否满足我的需求,即哪些术语被标记为同义词,哪些不满足。
但是当我这么做的时候
curl-XGET'localhost:9200/u分析?char\u filters=html\u条
我得到的不是结果,而是
{
"error": "ElasticsearchIllegalArgumentException[failed to find global token filter under [synonym]]",
"status": 400
}
知道我做错了什么吗?
由于实现需要访问“索引的令牌生成器工厂”,因此目前不可能使用特殊同义词令牌筛选器(请参阅elasticsearch Github问题。)不幸的是,目前没有记录文档在分析endpoint上使用自定义令牌过滤器的这一限制
以下是一些示例命令,用于使用重新打开索引的方法创建和更新同义词令牌过滤器:
# create index with filter
curl -v -X PUT -s -H 'Content-Type: application/json' 'localhost:9200/syn_test_idx' -d '
{
"settings" : {
"analysis" : {
"filter" : {
"test_synonym_filter" : {
"type" : "synonym",
"synonyms" : [
"i-pod, i pod => ipod",
"universe, cosmos"
]
}
}
}
}
}
# test token filter
' | jq .
curl -X POST -s -H 'Content-Type: application/json' 'localhost:9200/syn_test_idx/_analyze' -d '{
"tokenizer": "standard",
"filter": ["global_synonym_filter"],
"text": "cow i phone"
}' | jq .
(“i phone”未被同义词列表捕获。)
# update index
curl -X POST -s 'localhost:9200/syn_test_idx/_close' | jq .
curl -X PUT -s -H 'Content-Type: application/json' 'localhost:9200/syn_test_idx/_settings' -d '{
"analysis" : {
"filter": {
"test_synonym_filter":{
"type":"synonym",
"synonyms" : [
"i-pod, i pod => ipod",
"universe, cosmos",
"i-phone, i phone => iphone"
]
}
}
}
}' | jq .
curl -X POST -s 'localhost:9200/syn_test_idx/_open' | jq .
# test token filter
' | jq .
curl -X POST -s -H 'Content-Type: application/json' 'localhost:9200/syn_test_idx/_analyze' -d '{
"tokenizer": "standard",
"filter": ["global_synonym_filter"],
"text": "cow i phone"
}' | jq .
(“i phone”按同义词列表翻译为“iphone”。)
(另一个不相关的注意事项是,由于某种原因,我的zsh/YADR设置没有显示响应后主体,因此我正在通过管道将其传递给jq)
问题内容: 我一直在与ElasticSearch一起玩我的一个新项目。我已将默认分析器设置为使用ngram tokenfilter。这是我的elasticsearch.yml文件: 我创建了一个新索引并向其中添加了以下文档: 但是,当我使用查询或任何其他部分术语进行搜索时,ElasticSearch不会返回此文档。仅当我搜索确切的字词(如)时,它才会返回文档。 我还尝试过更改配置文件,以便defa
问题内容: 由于我是elasticsearch的新手,因此我无法识别 ngram令牌过滤器 和 edge ngram令牌过滤器 之间的 区别 。 两者在处理令牌方面有何不同? 问题答案: 我认为文档对此非常清楚: 该标记器与nGram非常相似,但仅保留从标记开头开始的n-gram。 标记器的最佳示例再次来自文档: 使用此标记生成器定义: 简而言之: 令牌生成器将根据令牌的配置来创建令牌。在这个例子
null null
我试图创建自己的StopFilter实现,它将根据其他字段选择术语。 是否有一种方法可以从标记筛选器访问文档,然后访问其他字段? (我想使用UpdateRequestProcessor来通知我的TokenFilter关于状态的信息,但我没有找到很好的方法) 谢谢,本尼
我使用postMan,输入请求地址http://localhost:8011/umrah/oauth/token?client_id=client_2&username=1234567&password=123456&grant_type=password&client_secret=123456,点击send按钮,出现错误,在内存中工作正常,当我想使用Jdbc令牌存储时,想法控制台错误:找不到令
问题内容: 我正在尝试使用Elasticsearch来实现自动完成功能,因为我知道该怎么做… 我正在尝试在索引已爬网数据时使用ES的edge_n_grams建立多词(短语)建议。 a 和a 之间有什么区别-我已经阅读了有关这些文档,但仍需要更多了解…。 例如,token_filter是ES用来针对用户输入进行搜索的内容吗?ES用于制作令牌的令牌生成器是吗?什么是代币? ES是否可以使用其中任何一种