2017-10-04 10 views
0

MoreLikeThis Solrの機能を使用して、他のドキュメントに基づいて類似のドキュメントを検索しようとしていますが、この機能の仕組みがわかりません。SolrのTermベクトル

hereというと、MoreLikeThisコンポーネントは、termVectorsが保存されているときに最も効果的です。そして、私の混乱がここに来る。

フィールドにフラグtermVectorsを有効にするだけで十分ですか(ソーラーのschema.xmlファイルにフィールドにムービーレビューテキストが含まれているとします)。それを挿入して保存した後、計算されたtermVectorsをMoreLikeThisハンドラへの呼び出しで使用すると、Solrは与えられたフィールドのtermVectorsを計算しますか?

答えて

1

短い答えはNOです。このようなスキーマを変更した後は、再度インデックスを作成する必要があります。 用語ベクトルを有効にすると、元の入力文書(この文書が索引に含まれている場合)から興味深い用語を見つけるプロセスが高速化されます。 第2段階のタイミング(More Query Like this Query)は同じままです。 MLTの動作方法の詳細については、[1]を参照してください。

一般に、このような変更をスキーマに適用する場合、ソルが関連するデータ構造を構築するようにドキュメントのインデックスを再作成する必要があります(用語ベクトルはドキュメントごとにミニインデックスであり、ディスク[2] NBこれはあなたのディスク使用率が増加します)

[1] https://www.slideshare.net/AlessandroBenedetti/advanced-document-similarity-with-apache-lucene

を[2] https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/codecs/lucene50/Lucene50TermVectorsFormat.html

+0

を私は実際にはまだスキーマを持っていない、また私は、のインデックス付きセットを持っています資料。私のソルのコアは今は空白です、私はちょうど始まっています。それで、私がよく理解していれば、Solrはインデックス作成時に各文書の用語ベクトルを自動的に作成します。 – wookie

+1

実際、スキーマで構成した後、Solrはインデックス作成時に注意し、データ構造を構築します。 MLTは自動的に構造体を使用します(内部的には、インデックスファイルのチェックを行います。評価するフィールドの用語ベクトルを見つけた場合は、自動的に使用します) –

+0

素晴らしいことです。実際にもう1つ質問があります。トピックをよく理解していることがわかります。 MLTを実行するとき、インデックス付きドキュメントの限定されたサブセットのみを考慮したいと考えています。たとえば、インデックスが150,000です。スキーマはid、title、contentおよびpublicationDateで構成されます。 ここでは、任意の入力ドキュメントに対してMLTクエリを実行したいと思いますが、02-01-2014と02-04-2014の間にpublicationDateのドキュメントのみを考慮するクエリが必要です。 'mlt.qf'のようなものがその解決策だと思いますか? – wookie

関連する問題