我在弹性搜索中测试url-s的映射。
我希望能够通过域名和tld搜索条目(例如example.com
)
并且没有tld(例如example
)并且要返回完整的域文档
(例如,http://example.com
和www.example.com
及类似的)
我把这个映射投射到ES - 在Sense中:
PUT /en_docs
{
"mappings": {
"url": {
"properties": {
"content": {
"type": "string",
"analyzer" : "urlzer"
}
}
}
},
"settings": {
"analysis": {
"analyzer": {
"urlzer": {
"type": "custom",
"tokenizer": "lowercase",
"filter": [ "stopwords_filter" ]
}
},
"filter" : {
"stopwords_filter" : {
"type" : "stop",
"stopwords" : ["http", "https", "ftp", "www"]
}
}
}
}
}
现在,当我索引一个url文档时,例如
POST /en_docs/url
{
"content": "http://example.com"
}
我可以通过搜索example.com
来获取它,但只有example
不会返回任何内容。
正如文档所述,我在我的分析器中使用的lowercase
标记器,以及我的分析器的直接测试显示,提供了example
和com
标记,但是当我搜索索引文档时, example
不返回任何内容:
GET /en_docs/url/_search?q=example
没有结果,但如果查询为example.com
,则返回结果。
我错过了什么?