2017-03-21 24 views
0

私はsolrテクノロジについて知っている初心者の開発者です。今日、私はsolr技術を使用してオートコンプリートを開発しようとしています。私はラップトップにインストールされています。 solrに関する私の研究から、solrはデータ収集に必要なオブジェクトの数を必要としました。solrを使用して名前のコレクションを検索

例:

[ { id:1, name:"Stackoverflow" }, { id:2, name:"Stackofchange" }, .....] 

私の質問は、彼らのデータ収集する名の技術サポート配列をSolrのだろうか?

例:

["Stackoverflow", "Stackofchange", .....] 

だから、私は、オブジェクトの配列であることを名前の配列を変換する必要がありません。

solrがデータコレクションとなる名前の配列をサポートしている場合。 私のsolr管理者にschema.xmlをどのように作成するか教えてください。私はいつも簡単なデータJSON

{ id:1, name:["Stackoverflow", "Stackofchange"] } 

でデータをインポートすることができなかったしかし私は、これは例外で多値を使用して、私のschema.xmlを作成しようとしている私は

Exception writing document id 1 to the index; possible analysis error: cannot change DocValues type from SORTED to SORTED_SET for field "name"

感謝を得ました。

私たちは、スキーマファイルのフィールド定義にmultivalued="true"を設定する必要があります/インデックス配列の値を格納するためのSolr技術

答えて

0

について誤解していた場合、私に知らせてください。あなたは、スキーマファイルを修正してSolrを再起動し、ドキュメントのインデックスを再作成した後nameフィールドの

フィールドdefintionは

<field name="name" type="string" indexed="true" stored="true" multiValued="false"/> 

の下に好きなはずです。あなたはあなたの高速応答のための

{ id:1, name:["Stackoverflow", "Stackofchange"] } 
+0

おかげで 私の次の質問、 は、我々はSolrのフィールド「名前」から文字列を検索することができます表示されます。 例: 「flow」キーで文字列を検索したい場合、結果は「Stackoverflow」です –

+0

できます。フィールド名にクエリ文字列を指定する必要があります。例: 'q = name:flow'これはn-gramトークナイザを使うべきであるという意味で' flowover'ではなく 'stackoverflow'とマッチします。 https://cwiki.apache.org/confluence/display/solr/Tokenizers#Tokenizers-N-GramTokenizer – vinod

+0

ありがとう、私はNGMLTokenizerFactoryをschema.xmlに追加しようとしています。私は 'q = name:flow'を使って検索していますが、' 'numFound":0'を取得しています。私は '{id:1、name:[" Stackoverflow "、" Stackofchange "]}'と '' q = name:flow'を検索してから ''を取得します '' Stackoverflow "]' –

関連する問題