0

Elasticsearch-analysis-kuromoji を使用して日本語で検索を実行していますが、2 つの非常に奇妙な動作が発生しています。最初の 1 つは、検索する文字が機能しないことです。各文字の間にスペースを入れて「輸出貿易易」として渡します。また、「と」などの文字は検索対象外です。

これは私の構成です:

            .setSettings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder()
                    .startObject()
                    .startObject("analysis")
                            //
                    .startObject("tokenizer")
                    .startObject("kuromoji_user_dict")
                    .field("type", "kuromoji_tokenizer")
                    .field("mode", "extended")
                    .field("discard_punctuation", "false")
                    .endObject()
                    .endObject()
                            //
                    .startObject("analyzer")
                    .startObject(JAPANESE_LANGUAGE_ANALYSIS)
                    .field("type", "custom")
                    .field("tokenizer", "kuromoji_user_dict")
                    .endObject()
                    .endObject()
                            //

                    .endObject()
                    .endObject().string()));

構成が間違っているのでしょうか、それとも「輸出貿易とント」のような文字には別のトークナイザーが必要ですか?

ありがとうございました

4

1 に答える 1

0

いくつかのオンライン調査とelasticsearch-analysis-kuromojiチームからの助けの後、問題を見つけることができました.アナリストを作成し、それを使用するようにクエリに指示しましたが、次のようにマッピングを追加する必要があります:

XContentBuilder xbMapping =
        jsonBuilder()
                .startObject()
                .startObject(indexType)
                .startObject("properties")
                .startObject("source")
                .field("type", "string")
                .endObject()
                .startObject("text")
                .field("type", "string")
                .field("analyzer", JAPANESE_LANGUAGE_ANALYSIS)
                .endObject()
                .endObject()
                .endObject()
                .endObject();

elasticSearchClient.admin().indices()
        .preparePutMapping(indexName)
        .setType(indexType)
        .setSource(xbMapping)
        .execute().get();
于 2015-05-04T10:06:21.400 に答える