1

ElasticsearchでfuzzyLikeThisFieldQueryを使用して結果クエリを強調表示する方法は? fuzzyQuery は理解できますが、fuzzyLikeThisFieldQuery は理解できません。たとえば、以下のコードでは fuzzyQuery を使用しています。

QueryBuilder allquery = QueryBuilders.fuzzyQuery("name", "fooobar").minSimilarity(0.4f);

SearchRequestBuilder builder = ds.getElasticClient()
                                        .prepareSearch("data")
                                        .setQuery(allquery)
                                        .setFrom(0)
                                        .setSize(10)
                                        .setTypes("entity")
                                        .setSearchType(SearchType.DEFAULT)
                                        .addHighlightedField("name")
                                        .addField("name");

    SearchResponse sr = builder.execute().actionGet();

結果は

If you want to have a <em>foobar</em> for oracle

しかし、fuzzyLikeThisFieldQuery を使用すると、強調表示されませんでした

QueryBuilder allquery = QueryBuilders.fuzzyLikeThisFieldQuery("name").likeText("fooobar").minSimilarity(0.4f);

結果は

If you want to have a foobar for oracle

理由を知っている人はいますか?

4

2 に答える 2

4

蛍光タグを設定するには、これら 2 つの関数を呼び出す必要があります。

builder.setHighlighterPreTags("<pre>").setHighlighterPostTags("</pre>");
于 2012-08-02T10:28:13.263 に答える
2

キーワードを強調表示し、以下に記述した方法を使用する必要があります。

searchRequest.setQuery(
       QueryBuilders.queryString(q))
       .addHighlightedField("title")
       .addHighlightedField("text")
       .setHighlighterPreTags("<em>")
       .setHighlighterPostTags("</em>");
 _searchResponse = searchRequest.execute().actionGet();

Gson を使用して応答文字列を json オブジェクトとして解析し、以下のようにエンティティにキャストします。

root = new JsonParser().parse(_searchResponse.toString());
p.results.add(root.getAsJsonObject().get("hits").getAsJsonObject().get("hits"));

次のような応答が得られます。

    content: {
results: [
[
{
_index: "news",
_type: "news",
_id: "111",
_score: 0.6056677,
_source: {
id: "1349298458",
title: "Title text",
text: "Detail text"
},
highlight: {
text: [
" some text <em>keyword</em> some text <em>keyword</em>- some text <em>keyword</em> some text."
]
}
},...

仕組みを理解して、自分で試してみてください。

于 2012-11-15T09:55:13.903 に答える