0

私はより良い方法を探しています。

ユーザーからの任意の数の入力用語 (姓としましょう) があります。それぞれに対してプレフィックス検索を実行し、一致するスコアを増やしたいと考えています。

分析されていないプレフィックス クエリは、私が現在使用しているものです。以下の例を参照してください。ただし、カスタム プログラミングを作成して空白の入力用語を分割し、トリミングすることで、アナライザーが行うことの責任も負っています。 、それらを小文字化し、トークンを使用して一連のプレフィックスクエリを作成して、スコアをそのように高めます。

  1. 入力例は、"Smith, Rodriguez, ROBERTS, doe" のような姓の束です。
  2. 次に、私のプログラミングはそれらをトークンに解析し、小文字に変換します:
    smith
    rodriguez
    roberts
    doe

  3. 最後に、複数のプレフィックスクエリを作成して、スコアをそのように高めます

"should": [
  {
      "dis_max" : {
          "tie_breaker": 1,
          "boost": 3,
          "queries": [
              {
                  "prefix" : { "surname": "doe"}
              },
                {
                  "prefix" : { "surname": "rob"}
              },
                {
                  "prefix" : { "surname": "rod"}
              },
                {
                  "prefix" : { "surname": "smi"}
              }
          ]
      }
  }
],

私はこれを非効率的な方法で行っていると思わざるを得ず、elasticsearch は私が知らないよりスマートな機能を提供する可能性があります。私の人生を楽にするために、プレフィックスクエリの分析された形式が欲しいです。たとえば、分析のために入力を逐語的にエラスティッククエリに渡すのが理想的"someAnalyzedPrefix": {"surname": "smith rodriguez roberts doe", prefix_length: 3}です。ここでは少し夢を見ていますが、私が探しているのはより簡単なソリューションです。

分析に責任を持ちながら、他の種類のクエリが同じ結果をもたらすことができるのではないかと思います。

改善のための提案はすべて歓迎します。それ以外の場合は、必ずしも美しくはありませんが、ニーズを満たすため、上記のパターンに固執します。

4

1 に答える 1