1

ニックネーム(スペースも含む)とIDを含む一連のドキュメントがあります。

ニックネームは、["example"、 "nick n4me"、 "nosp4ces"、 "Afancyguy"]のようにすることができます。

完全一致、ファジー、または部分的な文字を含むイベントによってプロファイルを検索できるクエリを見つける必要があります。

したがって、「ニックネーム」または「ニックネーム」または「ニックネーム」を書き留める場合、ドキュメント「ニックネーム」は常に出てくる必要があります。

私は次のようなもので試しました:

nickname:(%1%^4 %1%~^3 %1%*^1) 

ここで、「%1%」は私が検索しているものですが、特にスペースや数字のニックネームでは機能しません。たとえば、「nick n」を検索しようとすると、クエリは次のようになります。

nickname:(nick n^4 nick n~^3 nick n*^1) 
4

2 に答える 2

0

ブースト^はスコアリングのみに影響し、マッチングには影響しません。つまり、クエリがまったく一致しない場合、用語をブーストしてもしなくても違いはありません。

特定の例では、次の理由でクエリが一致しません。

1)トークンまたはトークン化されているnick n必要があるため、一致しません。nickn

2)編集:標準のクエリパーサーを使用すると、ファジークエリは単一の用語でのみ機能することがわかりました。あなたの場合、おそらくComplexPhraseQueryParsernick n~を使用して書き直す必要があるため、全体でファジークエリを実行できます。また、あいまいクエリのしきい値を指定することもできます (技術的には、最小レーベンシュタイン距離を指定しています)。明らかに、しきい値を調整する必要があり、通常は試行錯誤が必要です。PhraseQuery

于 2013-03-11T09:17:30.327 に答える
0

より簡単な戦術は、すべてのニックネームを 1 つのフィールドにロードすることです。この例では、ニックネーム フィールドに 4 つの値があります。ニックネームにスペースを埋め込む場合は、StandardAnalyzer よりも単純なアナライザーを使用するか、フレーズ検索を使用する必要があります。

于 2013-03-29T20:59:30.347 に答える