0

頑張っていても自分に答えられないことに疑問を持っています。

理解の問題だと思います。

そう...

  • 長いテキスト フィールド (製品説明) のインデックスを作成しようとしていますが、単語が重複している可能性があります。フレーバーについて話しているとしましょう。チョコレートと言い、次に話し続け、再びチョコレートとします。

  • solrがインデックスを作成している場合(solrコントロールパネルの分析タブを理解している限り)、用語(「ポインター」であり、各用語->「アイテム」を識別するuniqueKey属性に関連付けられている)を作成します私たちが持っている各トークン。

solr インデックスには、同じアイテムを指す 2 つの用語がありますか?

これは私のテキストアナラ​​イザーです:

<analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.GermanNormalizationFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" enablePositionIncrements="true" />
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.EnglishMinimalStemFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true" />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>

重複するエントリを削除しますが、分析を確認すると、次のことがわかりました。

スクリーンショット

私がsolrを理解している限り、最後に、私のインデックスには、その「アイテム」を指すこの3つの用語があります。チョコレート、ブラブラブラ、チョコレートです。そうですか?

質問が明確であることを願っています:)

ありがとう !

4

1 に答える 1

7

分析後に表示されるのは、テキストが Solr にインデックス付けされる直前です。実際にインデックスを作成すると、各用語が一度だけ保存され、その用語のすべての出現箇所が (document_id, position) の形式で保存されます。

以下の例がより明確になることを願っています。

次の 3 つのドキュメントを Solr に追加するとします。

T[0] = "dark chocolate is the best chocolate"

T[1] = "i love dark chocolate"

T[2] = "chocolate is delicious"

Solr は、次のように転置インデックスに格納します。

「最高」: {(T[0], 位置)}

"チョコレート" : {(T[0], 位置 1), (T[0], 位置 2), (T[1], 位置), (T[2], 位置)}

「暗い」 : {(T[0]、位置)、(T[1]、位置)}

「おいしい」 : {(T[2], 位置)}

"i" : {(T[1], 位置)}

"は": {(T[0], 位置), (T[1], 位置)}

「愛」 : {(T[0], 位置)}

"the" : {(T[0], 位置)}

ノート:

  • position は、ドキュメント内の用語の開始オフセットと終了オフセットを格納します
  • チョコレート用語はインデックスに 1 回保存されますが、ドキュメント T[0] への 2 つの参照があります
于 2013-05-15T18:00:50.093 に答える