0

ワイルドカードを使用した正確なフレーズ検索のヘルプを探しています。

QueryBuilders.multiMatchQuery("Java Se", "title", "subtitle")
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX);

上記のクエリは、次の結果を返します。

1) Java 検索 2) エラスティック Java 検索

末尾のワイルドカードが機能します。

しかし、以下のクエリのように検索すると、

QueryBuilders.multiMatchQuery("ava Se", "title", "subtitle")
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX);

「ava Se」と完全に一致するものはないため、何も返されません。上記と同じ結果を期待していました。

先頭のワイルドカードは機能しません。これを達成する方法はありますか?

ありがとう、Baskar.S

4

2 に答える 2

1

「Type.PHRASE_PREFIX」のjavadocを見ると、文字列の最後の用語のみが接頭辞として使用されていることがわかります。したがって、この場合は「Se」のみが使用されます。

インデックスでこのクエリを試したところ、うまくいきました: .setQuery(QueryBuilders.matchQuery("body", "(.*?)ing the").type(MatchQueryBuilder.Type.PHRASE_PREFIX))

「提案を強化しています..」、「..を使用して」などのフレーズを含むドキュメントが返されました。

于 2016-01-21T21:10:22.577 に答える
0

nGramアナライザーを使用する必要があります。または、edgeNGramを使用することをお勧めします。これを行うと、インデックスは少し重いかもしれませんが、接辞検索はワイルド カードなしで問題なく動作します。

于 2015-04-10T05:30:44.830 に答える