私はいくつかの非ASCII文字の結果を返さないSolrコレクションを持っています。使用している例は、文字列S11. • “≡ «Ñaïvétý» ‘¢¥£’ ¶!#%
です。インデックス付きフィールドにオブジェクトがあるにもかかわらず、その文字列全体を検索すると結果が返されません。ただし、その文字列の部分文字列を検索すると、一致が返されます。一致が返されないのは、• “≡
の3つです。フィールドはtext_en
としてインデックスされましたが、私はedge_ngram
(問題を解決するためにCargo Cult魔法のビットを期待しています)を試しました。これらの3つの文字について特別なことがありますか、またはSolrがフィールドのインデックスを作成する方法を調整する必要がありますか?特定の文字でSolr検索に失敗する
django-haystackで検索していますが、問題はSolr管理者にも表示されます。ここで
は、2つのフィールドタイプの定義です:
<fieldType name="edge_ngram" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1" catenateWords="0"
catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.EdgeNGramFilterFactory"
minGramSize="2" maxGramSize="50" side="front" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1" catenateWords="0"
catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
</analyzer>
</fieldType>
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
の結果をチェックしましたか?空白のように見えるが、そうではない文字がいくつかある。 1つの例は「[非分割スペース](https://en.wikipedia.org/wiki/Non-breaking_space)」です。これらはコピーして貼り付けるときに文字化けすることがあります。 – cheffe
最後の質問:)あなたのスキーマでfieldTypesの 'text_en'と' edge_ngram'はどのように定義されていますか?あなたはそれらを共有しますか?その後、問題を再現しようとする可能性があります。 – cheffe
@cheffe - フィールド定義を追加しました。私は空白文字についても疑問に思っていましたが、私はそれらが単に普通の空白文字であると言うことができます。 Solrは、管理パネルでクエリを見ると、他のスペースと同じように、スペースを「単語」に分割しても問題はありません。 – Tom