首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch -索引词,bigram和trigram

Elasticsearch -索引词,bigram和trigram
EN

Stack Overflow用户
提问于 2014-04-28 13:00:50
回答 1查看 3.1K关注 0票数 3

我试着索引一些短语,像这样:

代码语言:javascript
复制
"Elasticsearch is a great search engine"

索引样

代码语言:javascript
复制
Elasticsearch       # word
is                  # word
a                   # word
great               # word
engine              # word
Elasticsearch is    # bi-gram
is a                # bi-gram
a great             # bi-gram
great search        # bi-gram
search engine       # bi-gram
Elasticsearch is a  # tri-gram
is a great          # tri-gram
a great search      # tri-gram
great search engine # tri-gram

我知道如何索引单词(用默认索引器)和索引bigram和trigram(用n克索引器),但不是同时进行。

我该怎么做?

问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-28 13:12:29

您可以使用 type。这是我创造的一个例子-

代码语言:javascript
复制
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 0,
    "analysis": {
      "filter": {
        "synonym": {
          "type": "synonym",
          "synonyms_path": "synonyms.txt"
        },
        "my_metaphone": {
          "type": "phonetic",
          "encoder": "metaphone",
          "replace": false
        }
      },
      "analyzer": {
        "synonym": {
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "synonym"
          ]
        },
        "metaphone": {
          "tokenizer": "standard",
          "filter": [
            "my_metaphone"
          ]
        },
        "porter": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "porter_stem"
          ]
        }
      }
    }
  },
  "mappings": {
    "type": {
      "_all": {
        "enabled": false
      },
      "properties": {
        "datafield": {
          "type": "multi_field",
          "store": "yes",
          "fields": {
            "datafield": {
              "type": "string",
              "analyzer": "simple"
            },
            "metaphone": {
              "type": "string",
              "analyzer": "metaphone"
            },
            "porter": {
              "type": "string",
              "analyzer": "porter"
            },
            "synonym": {
              "type": "string",
              "analyzer": "synonym"
            }
          }
        }
      }
    }
  }
}

然后,您可以指定要针对哪个字段进行搜索,即datafield.synonymdatafield.bigram。然后,您可以构建您的查询,增加对您的结果最重要的字段。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23341860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档