Elasticsearch小写标记器怪癖?

时间:2014-11-04 18:15:36

标签: java elasticsearch lucene

我在弹性搜索中测试url-s的映射。

我希望能够通过域名和tld搜索条目(例如example.com) 并且没有tld(例如example)并且要返回完整的域文档 (例如,http://example.comwww.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标记器,以及我的分析器的直接测试显示,提供了examplecom标记,但是当我搜索索引文档时, example不返回任何内容:

GET /en_docs/url/_search?q=example

没有结果,但如果查询为example.com,则返回结果。

我错过了什么?

0 个答案:

没有答案