Solrを使用して大文字と小文字を区別しない並べ替えを実現しようとしています。this issueに直面しています。docvalues = trueの場合、小文字のフィルタファクトリは機能しません。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="autoSolrSchema" version="1.5">
\t <types>
\t \t ...............
\t \t <fieldType class="org.apache.solr.schema.TextField" name="TextField">
\t \t \t <analyzer>
\t \t \t \t <tokenizer class="solr.KeywordTokenizerFactory"/>
\t \t \t \t <filter class="solr.LowerCaseFilterFactory"/>
\t \t \t </analyzer>
\t \t </fieldType>
\t \t .............
\t </types>
\t <fields>
\t .................
\t \t <field indexed="true" multiValued="false" name="name" stored="true" type="TextField" docValues="true" />
\t ................ \t
\t </fields>
\t <uniqueKey>id</uniqueKey>
\t </schema>
は私がthe solutionに続いて、私のSolr schema.xmlファイルを次のように変更し(のみreleventフィールドとフィールドタイプが示されている)製の
....But When I get search result its not sorted case insensitive. It gives all camel case result first and then all lower case
If I m having short names
Banu
Ajay
anil
sudhir
Nilesh
It sorts like Ajay, Banu, Nilesh, anil, sudhir
...................
を[コピーしました]
しかし、それはソートの問題を解決しませんでした。だから私はフィールド定義からdocValues="true"
を削除して再試行しました。このソートはうまくいきましたが、クエリにはuseFieldCache=true
を指定しなければなりませんでした。
なぜsolr.LowerCaseFilterFactory
がdocValues="true"
で動作しないのですか?
docValues="true"
を削除し、useFieldCache=true
を指定しないで、大文字と小文字を区別しない並べ替えを行う方法はありますか?
更新:
私はericLavaultのアドバイスに従い、更新要求プロセッサを実装しました。しかし、今私は以下の問題に直面しています:
1)私たちはdse searchを使用しています。助言、私はlowecaseするNMを変換して挿入されたよう
Solr schema :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="autoSolrSchema" version="1.5">
\t <types>
\t \t <fieldType class="org.apache.solr.schema.UUIDField" name="UUIDField"/>
\t \t <fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
\t </types>
\t <fields>
\t \t <field indexed="true" multiValued="false" name="nm" stored="true" type="StrField" docValues="true"/>
\t \t <field indexed="true" multiValued="false" name="id" stored="true" type="UUIDField"/>
\t \t <field indexed="true" multiValued="false" name="nm_s" stored="true" type="StrField" docValues="true"/>
\t </fields>
\t <uniqueKey>id</uniqueKey>
</schema>
:
CREATE TABLE IF NOT EXISTS test_data(
id UUID,
nm TEXT,
PRIMARY KEY (id)
Solrのスキーマ:だからthis article.
に私たちの現在のテーブルのスキーマを指定する方法が続きます更新リクエストプロセッサを使用してnm_sその後、スキーマを再ロードして再インデックス化しました。私は値nm_sが正しく更新されていることを確認するにはどうすればよい
...enable docvalues true n reindex or place useFieldCache=true...
2):しかし、このselect nm from test_data where solr_query='{"q": "(-nm:(sssss))" ,"paging":"driver","sort":"nm_s asc"}';
を使用して照会しながら、私は次のエラーを取得していますか? nm_sの値を見る方法はありますか?
3) docValuesが有効になっていても、上記のエラーが表示されるのはなぜですか?
フィールド定義を変更した後(docValuesの追加/削除時)にコンテンツのインデックスを再作成しましたか? – EricLavault
@ nttting yes ... – Sharun
okこれは頼んで申し訳ありませんが、あなたは決して知りません! :)私はこれに手掛かりを持っていると思う、ちょうど – EricLavault