我试图用_analyze API获得关键字标记的多字同义词。API对单字同义词返回预期结果,但对多字同义词不返回预期结果。以下是我的设置和分析链:
curl -XPOST "http://localhost:9200/test" -d'
{
"settings": {
"index": {
"analysis": {
"filter": {
"my_syn_filt": {
"type": "synonym",
"synonyms": [
"foo bar, fooo bar",
"bazzz, baz"
]
}
},
"analyzer": {
"my_synonyms": {
"filter": [
"lowercase",
"my_syn_filt"
],
"tokenizer": "keyword"
}
}
}
}
}
}'
curl 'localhost:9200/test/_analyze?analyzer=my_synonyms&text=baz'
{
"tokens": [
{
"position": 1,
"type": "SYNONYM",
"end_offset": 3,
"start_offset": 0,
"token": "bazzz"
},
{
"position": 1,
"type": "SYNONYM",
"end_offset": 3,
"start_offset": 0,
"token": "baz"
}
]
}
curl 'localhost:9200/test/_analyze?analyzer=my_synonyms&text=foo+bar'
{
"tokens": [
{
"position": 1,
"type": "word",
"end_offset": 7,
"start_offset": 0,
"token": "foo bar"
}
]
}
为什么analyze API不返回具有同义词类型的“foo bar”和“fooo bar”标记?
“tokenizer”:“keyword”key-value还需要添加到my_syn_filt过滤器声明中,如下所示:
curl -XPOST "http://localhost:9200/test" -d'
{
"settings": {
"index": {
"analysis": {
"filter": {
"my_syn_filt": {
"tokenizer": "keyword",
"type": "synonym",
"synonyms": [
"foo bar, fooo bar",
"bazzz, baz"
]
}
},
"analyzer": {
"my_synonyms": {
"filter": [
"lowercase",
"my_syn_filt"
],
"tokenizer": "keyword"
}
}
}
}
}
}'
通过上面的映射,_analyze API返回所需的同义词标记:
{
"tokens": [
{
"position": 1,
"type": "SYNONYM",
"end_offset": 7,
"start_offset": 0,
"token": "foo bar"
},
{
"position": 1,
"type": "SYNONYM",
"end_offset": 7,
"start_offset": 0,
"token": "fooo bar"
}
]
}
问题内容: 我正在使用elasticsearch 1.1.2。 我在可搜索字段上使用具有不同权重的多重匹配查询。 例: {“ multi_match”:{“ query”:“这是一个测试”,“ fields”:[“ title ^ 3”,“ description ^ 2”,“ body”]}} 因此,在我的示例中,标题的重要性是正文的三倍。 我想根据找到的匹配项为每个字段自定义权重。 假设我搜索
我正在寻找一种方法来搜索公司名称与关键字标记,但没有停止词。 例如:索引公司名称为“Hansel und Gretel Gmbh” 这里“und”和“Gmbh”是公司名称的停止词。 如果搜索项是"Hansel Gretel",则应找到该文档;如果搜索项是"Hansel",则不应找到任何文档。如果搜索词是"hansel gmbh",也应该找到no文档。 我曾尝试将关键字标记器与自定义分析器中的停止词
问题内容: 我有一个已被标记的文本,或者一般来说,单词列表也是可以的。例如: 如果我有一个包含单个单词和多个单词键的Python字典,该如何有效且正确地检查其在文本中的存在?理想的输出应该是key:location_in_text对,或者是一些方便的东西。提前致谢! 附言:“正确”地解释-如果我的字典中有“租赁”,我不希望请打上标记。另外,需要识别复数。我想知道如果没有许多if-else子句,是否
问题内容: 我目前正在尝试使我的java代码(使用eclipse)执行某些功能(如果说了某件事)。我正在使用Sphinx4库,这是我目前拥有的: 我想做的是在它说的那行: 如果我的发言是Hello Computer,Hello Jarvis,Good Morning Computer或Good Morning Jarvis,则运行该功能。或者换句话说,如果语音与.gram文件中的“ public
问题内容: 编辑:要补充一点,同义词似乎可以与基本的查询字符串查询一起使用。 这将返回新罕布什尔州的所有结果,但对“ nh”的“匹配”查询将不返回结果。 我正在尝试将同义词添加到我的Elastic索引中的位置字段中,这样,如果我对“质量”,“马”或“马萨诸塞州”进行位置搜索,则每次都会得到相同的结果。我将同义词过滤器添加到设置中,并更改了位置映射。这是我的设置: 以及location.region