2016-04-14 5 views
3

ハンガリー語は英語よりやや厄介です。言葉はかなり変わってしまいます。つまり、ユーザーに素晴らしい体験を提供したい場合は、検索を微調整する必要があります。ソルの添え字とスペースのあるか無い単語

私はかなり長い間研究を続けてきましたが、いくつかの解決策を見つけましたが、私たちのニーズに適しているかどうかはわかりません。それで、私はsolrの使用経験が豊富なあなたからの助けを求めたいのです。

I.言葉は、またはスペースなしで書かれた

どのようにそれが可能である同じ結果、単語がまたはスペースなしで入力されていない問題を取得するには?

は、私は(ハンガリー語で」üvegváza」)ガラスの花瓶を探していますと言う。ハンガリー語では、同様に一緒に、このような言葉を書くことは非常に一般的です。それは誰かの種類の場合、同じ結果を得ることが可能である方法スペースのない単語:?。?「üvegváza」 そしてヴィーカのその逆は、どのように私は対処検索用語「üvegváza

IIにとっての「üvegváza」という言葉を持つアイテムを得ることができます接辞、変奏

ハンガリー語では、語義は単語自体を変えることができます。あなたが "花の装飾との花瓶" を探している場合たとえば、あなたが言うことができる:花と=花瓶

  • 「vázavirágos」(英語では最も近い意味)

  • váza vázavirágokkal 『=花瓶の花と「

  • 花と花瓶=』virággal

どのような方法で変圧を処理するのですか?私は「virág」と入力した場合たとえば、どのようにそれは同様に「virágos」、「virággal」の結果を与えることができますか? その逆:?「virágos」キーワードを入力し、単語「virág」との項目を取得

あなたは私たちがこれらの作業を取得することができますどのように何かアドバイス/アイデアを持っていますか

答えて

0

これはできますか?を使用して単語を小さなトークンに分割することができます。

あなたは"bicycle"

として入力を持っているならば、作成したトークンが出ている。ここ

<analyzer> 
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="4" maxGramSize="15"/> 
</analyzer> 

のようにそれを使用します。

"bicy", "bicyc", "icyc", "icycl", "cycl", "cycle", "ycle" 

あなたのフィールドに、このNGramTokenizerFactoryを試してみて、それを確認することができますソル分析ツールでクエリテキストと一致する場合。

また、EdgeNGramTokenizerFactoryを見て、フィールドテキストを読み取り、与えられた範囲のサイズのエッジnグラムトークンを生成することもできます。

これは、それは別の属性sideを持って

<analyzer> 
    <tokenizer class="solr.EdgeNGramTokenizerFactory" minGramSize="2" maxGramSize="5"/> 
</analyzer> 

のように使用することができます("front"または"back"、デフォルトは"front"ある)テキストの先頭(front)からか最後からnグラムを計算するかどうか(back)

入力テキスト:"babaloo" 出力テキスト:"ba", "bab", "baba", "babal"

+0

ありがとうございます。ハンガリー語の言葉の断片は、まったく違う意味、あるいは本当に広い意味を持つことがあります。私は、このソリューションがユーザーに無関係な検索結果をあまりにも多く与えることになるのではないかと心配しています。あなたが他の考えを持っているなら、あなたがそれを共有すれば嬉しいです。 – kz88

+0

その真実...断片は、奇妙な結果をもたらすかもしれません...しかし、私はあなたがクエリを実行中ではなく、インデックス作成中にアナライザを適用する方法を試してみることをお勧めします。クエリの場合は、 "KeywordTokenizerFactory"を使用します。 solr解析ツールで確認してください...あなたの検索条件に応じて、独自のfieldTypeを実行または構築することができます。 –

0

Solrには、ハンガリーのサポートのいくつかのレベルがあります。 the solr-start analyzer pageのハンガリー語を検索すると、完全なアナライザとフィルタが表示されます。スノーボールのフィルタにハンガリーのサポートもあります。 the TYPO 3 Solr plugin configurationに設定例があります。

マルチトークン対シングルトークンの単語を処理するには、トークンセパレータを ""(空文字列)に設定してShingleFilterを調べるとよいでしょう。これは、テキストと検索の両方を結合したり分離したりすることができれば、いくつかの実験を必要とするかもしれません。タイプにautoGeneratePhraseQueriesを有効にして、分離した単語のバージョンを取得して、それをQuery-time ShingleFilter(私が思う)にする必要があるかもしれません。

+0

ありがとうございます、我々はこれらを試してみましょう。 – kz88

関連する問題