2

私はMySQLテーブルを持っています:

CREATE TABLE documents (
    id INT NOT NULL AUTO_INCREMENT,
    language_code CHAR(2),
    tags CHAR(30),
    text TEXT,
    PRIMARY KEY (id)
);

Solr DIH について 2 つの質問があります。

1)langauge_codeフィールドは、フィールドの言語を示します。また、言語に応じて、さまざまな Solr フィールドtextにインデックスを付けたいと考えています。text

# pseudo code

if langauge_code == "en":
    index "text" to Solr field "text_en"
elif langauge_code == "fr":
    index "text" to Solr field "text_fr"
elif langauge_code == "zh":
    index "text" to Solr field "text_zh"
...

DIH はこのようなユースケースを処理できますか? そのように構成するにはどうすればよいですか?

2)tagsフィールドは、Solr フィールドに索引付けする必要がありますmultiValued。複数の値は、コンマで区切られた文字列に格納されます。たとえばtags、文字列が含まれている場合"blue, green, yellow"、3 つの値"blue""green""yellow"Solr multiValued フィールドにインデックス付けします。

DIHでそれを行うにはどうすればよいですか?

ありがとう。

4

2 に答える 2

5

まず、スキーマで次のようなものを許可する必要があります。

<dynamicField name="text_*" type="string" indexed="true" stored="true" />

次に、DIH構成で次のようにします:

<entity name="document" dataSource="ds1" transformer="script:ftextLang" query="SELECT * FROM documents" />

スクリプトがデータソースのすぐ下で定義されている場合:

<script><![CDATA[
  function ftextLang(row){
     var name = row.get('language_code');
     var value = row.get('text');
     row.put('text_'+name, value); return row;
  }
]]></script>
于 2011-02-25T15:26:34.973 に答える
2

申し訳ありませんが、DIH の質問について直接の回答がありませんが、知っておくと興味深いでしょう。

2 文字の言語コードに気づき、5 文字のスロットを提案しました。一部の言語には、重要な方言の違いがあります。たとえば、簡体字中国語と繁体字中国語です。形態素解析の場合、SmartCN フィルターは zh-cn を処理できますが、zh-tw などは処理できません。

ポルトガル語とスペイン語も、すべての方言を混ぜないように警告されている言語ですが、違いはそれほど劇的ではなく、どちらも引き続き検索可能です.

もちろん、あなたはすでにこれを知っているかもしれませんが、単純にするために質問に追加しなかっただけです. それは私の心に非常に新鮮な主題です。

于 2011-01-19T18:14:39.940 に答える