0

私は読んでElasticSearchいて、次のことを行う方法についての答えを見つけることができませんでした:

たとえば、タイトルに「study」というレコードがあり、ユーザーが「study」ではなく「studying」という単語を使用しているとします。これに合わせてどのように設定しElasticSearchますか?

ありがとう、アレックス

ps: 重複していたらすみません。何を検索すればよいかわかりませんでした。

4

2 に答える 2

3

これに興味があるかもしれません: http://www.elasticsearch.org/guide/reference/query-dsl/flt-query/

例: 私は書籍のタイトルにインデックスを付けており、このクエリでは:

{
  "query": {
    "bool": {
      "must": [
        {
          "fuzzy": {
            "book": {
              "value": "ringing",
              "min_similarity": "0.3"
            }
          }
        }
      ]
    }
  }
}

私は得た

{
  "took" : "1",
  "timed_out" : "false",
  "_shards" : {
    "total" : "5",
    "successful" : "5",
    "failed" : "0"
  }
  "hits" : {
    "total" : "1",
    "max_score" : "0.19178301",
    "hits" : [
      {
        "_index" : "library",
        "_type" : "book",
        "_id" : "3",
        "_score" : "0.19178301",
        "_source" : {
          "book" : "The Lord of the Rings",
          "author" : "J R R Tolkein"
        }
      }
    ]
  }
}

これが唯一の正しい結果です..

于 2013-05-23T17:47:41.020 に答える
2

ドキュメントにステミングを適用して、インデックスを作成するときにstudyingインデックス作成の下にいるようにすることができますstudy。クエリを実行するときも同じことを行うので、studyingもう一度を検索すると、 を検索しstudy、 と の両方を探して一致するものを見つけることができstudyますstudying

ステミングはもちろん言語に依存し、さまざまな手法があります。英語のスノーボールは問題ありません。何が起こるかというと、データにインデックスを付けるときに一部の情報が失われるということです。これは、ご覧のとおり、勉強と勉強を実際に区別することができなくなったためです。その区別を維持したい場合は、multi_fieldを使用して同じテキストに異なる方法でインデックスを付け、異なるテキスト分析を適用することができます。そうすれば、ステムなしバージョンとステム付きバージョンの両方の複数のフィールドを検索でき、おそらくそれらに異なる重みを付けることができます。

于 2013-05-23T20:40:54.993 に答える