2016-04-27 6 views
0

私はSolr5.2.1と協力し、2つの異なる値のインデックス私の変数(リンク)(元のリンク、コアリンク)例えばSolrのインデックスWebリンク

にしたいんだ、その後、入力http://wiki.apache.org/solr/がある場合には、元のリンクはhttp://wiki.apache.org/solr/そのものであり、コアリンクはwiki.apache.org

私の現在のSolrは、元のリンクのためのコアリンクをindexsが、ではありません。 私のsolrの設定に助けてください元のリンクをインデックス化するとうまくいきます

私のschema.xmlに、リンクは以下のように定義され、 "text_general"が使用されています。

<field name="link" type="text_general" indexed="true" stored="true" required="false" /> 

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true"> 
<analyzer type="index"> 
<tokenizer class="solr.StandardTokenizerFactory"/> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 

元のリンクを取得するには、multiValued = "true"を使用する必要がありますか?

答えて

0

あなたは同じフィールドにインデックスに両方のリンク文字列値をしたいので、

はいフィールド名「リンク」のために多値=「true」にしてみてください複数の値を受け入れるためにあなたのリンクフィールドを有効にする必要があります。 StandardTokenizerを使用すると、元のリンクが分割されます。ここでは、文字 "/"を区切り文字と見なします。ここにあなたの元のリンクhttp://wiki.apache.org/solr/それは

HTTP

wiki.apache.org

Solrの

0

としてトークンあなたはコアリンクのための別のフィールドを持つことができ、その後のSolrの文書は、コアを持つことになりますとなりますリンクと元のリンク。

私は本当の多値することによって、同じフィールドのようにそれを追加しないようお勧めします。あなたがオリジナルと別々のコアリンクしたい場合には、将来に

は、その後、別のフィールドはあなたのために働くだろう。

しかし、はい、あなたは、任意の別の検索や分析を実行したくない場合は、同じフィールドに追加しても害はありません。

0

あなたのschema.xmlで述べたように、それは区切り文字として「/」を扱いますので、あなたは、標準トークナイザを使用しないでください。その代わりに、あなたは示され、

<analyzer type="index"> 
<tokenizer class="solr.KeywordTokenizerFactory"/> 

多値フィールドとしてKeyword Tokenizerを使用する必要があり、私たちは、同じフィールドに複数の値を保存することができます。したがって、multiValued = "true"を使用することはありません。

+0

あなたが述べたように、私はキーワードのトークナイザに標準トークナイザファクトリーを変更しました。その後、元のリンクのみを提供します。元のリンクとコアリンクの両方をどのようにインデックスできますか? –

+0

また、コアリンクのインデックスを作成する場合は、schema.xmlに別のフィールド 'url_core'を作成し、fieldTypeを' text_url_core'として作成し、正規表現トークナイザを次のように定義します。 ' <トークナイザクラス=" Solrの。 PatternTokenizerFactory "pattern ="(http [s]?| ftp):\/\ /(\ * \)\/"group =" 2 "/> ' – hp36

関連する問題