2016-05-03 7 views
0

クエリ内の単語の順列が一致するようにクエリを分析するようにOpen-Searchサーバーを構成する必要があります。opensearchserverトークナイザでクエリ内のすべての単語を並べ替えます。

たとえば、 フィールドのインデックス作成では、「膝の痛み」というフレーズがあります。今私の質問が「人間の膝の痛みを取り除く方法」のようなものなら私は、このクエリが索引付けフィールドに「膝の痛み」を持つ文書を出力することを望みます。

"削除"、 "痛み"、 "人間"、 "膝"、 "痛みの除去"、 "膝の除去"、 "人間の除去"、 "痛みの膝" 「人間の膝」、「膝の痛み」、「人間の痛み」など。それは、「膝の痛み」を一致するように

。 は私がこれを達成するのを助けることができる任意のトークナイザやフィルタがあります。

答えて

1

選択あなたのインデックスは、スキーマタブをクリックし、次に[分析ツール]タブをクリックします。

通常、TextAnalyzerを編集して追加のフィルタを追加します。 keは大文字と小文字を区別せず、 "a"、 "an"、 "the"などの停止語を削除します。

次に、Shingleフィルタは、フレーズマッチを行うためのnグラムを提供します。 3-4ワードのシングルサイズのシングルフィルタが通常動作します。シングリングは、分析されたテキストからの単語フレーズの重なり順列を作成しています。 shingleサイズが3の "brown fox jumps high"は、1,2語、3語の分析n-gramを作成します。 IE、1ワード: "the"、 "brown"、 "fox"、 "jumps"、 "high"。 2ワード:「ブラウン」、「褐色キツネ」、「キツネジャンプ」、「ハイジャンプ」等

enter image description here

+0

シングルフィルタ一方向にも連続した単語の組み合わせで動作します。あなたのイメージのような "膝の痛み"が存在しません。また、各トークンに関連付けられている数字が何であるかを示すことができます(角括弧内の数字) –

+0

トークン内の数字は、分析された元の文字列中のその用語の開始および終了文字の位置です。たとえば:remove [7,13 - 1]、その単語は文字列の文字7で始まり、文字位置13で終わります。 " - 1"が何であるか分かりません。シングリングが文字列内の単語のすべての置換を作成するのではなく、隣接する単語のみを作成することは本当です。しかし、隣接しない単語マッチングはluceneのスコアリングによって処理されます。 shingleフィルタは、隣接する単語フレーズマッチングのスコアが高くなります。これは、フェーズがnグラムトークンと完全に一致するためです。 – DotNetNuclear

+0

そのため、すべての可能な順番でトークンを取得する方法はありません –

関連する問題