2017-06-23 12 views
0

私は検索したいドメイン名のない複数のドメイン名を持っていますが、単語の間には常に自然な中断がありません( " - "のように)。例:セパレータ(ドメイン名など)を持たないテキストを分析するにはどうすればよいですか?

techtarget 
americanexpress 
theamericanexpress // a non-existent site 
thefacebook 

使用するのに最適なアナライザは何ですか?例えばユーザーが "american ex"を入力した場合、 "americanexpress"よりも "theamericanexpress"の優先順位を付けたいと思います。単純なプレフィックスクエリはこの特定のケースでは機能しますが、ユーザは「facebook」を入力しますが、何も返されません。 (あなたを含む場合のほとんどで

答えて

0

Standard Analyzerは十分である。また、それはElasticSearchでデフォルトアナライザであり、それはgrammar based tokenizationを提供たとえば: "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]にトークン化されます

あなたの場合は、。。。ドメイン名は[techtarget, americanexpress, theamericanexpress, thefacebook]として用語のリストにトークン化されている。

facebookのクエリ検索が何も返さdoesnotなぜ?

辞書にはfacebookという用語が格納されていないため、検索結果はデー​​タを返しません。何が起こっているのは、ESが辞書内に検索用語facebookを見つけようとしますが、辞書にはthefacebookしか含まれていないため、検索結果は返されません。

ソリューション:

thefacebookで検索用語facebookを一致させるために、あなたはすなわち.*facebookthefacebookに一致する検索語周りワイルドカードをラップする必要があります。ただし、regexを使用すると、パフォーマンスのオーバーヘッドが発生することにご注意ください。

その他の回避策は、synonymsを使用することです。シノニムとは、検索用語に同義語(代替検索語のリスト)を指定できることです。例えば"facebook, thefacebook, facebooksocial, fb, fbook"これらのシノニムを使用すると、これらのシノニムから検索語を提供できます。これは、これらのシノニムと一致します。つまり、検索語句がfacebookで、ドメインがthefacebookとして保存されている場合、検索は一致します。

また、優先順位付けのためには、まずscoring ESでの仕事とは、あなたがBoosting使用することができる方法を理解する必要があります。

関連する問題