0

text_deSolr 5.4 を使用しており、次の schema.xmlで定義されたテキスト フィールドがいくつかあります。

<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="lang/stopwords_de.txt" format="snowball" ignoreCase="true"/>
      <filter class="solr.GermanNormalizationFilterFactory"/>
      <filter class="solr.GermanLightStemFilterFactory"/>
    </analyzer>
</fieldType>

これはデフォルト設定です。name:Roseweinを検索しても結果がないのに、name:Roséwein関連するエントリが返されるのはなぜだろうか。nameそこで、いくつかの特別な文字と有効なオプションを使用してフィールドをクエリしようとしましdebugQueryた。その結果、次のようになります。

{
  "responseHeader": {
    "status": 0,
    "QTime": 0,
    "params": {
      "debugQuery": "true",
      "indent": "true",
      "q": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú",
      "_": "1459935371889",
      "wt": "json"
    }
  },
  "response": {
    "numFound": 0,
    "start": 0,
    "docs": []
  },
  "debug": {
    "rawquerystring": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú",
    "querystring": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú",
    "parsedquery": "name:aaaaãåāăææousséèêiou",
    "parsedquery_toString": "name:aaaaãåāăææousséèêiou",
    "explain": {},
    "QParser": "LuceneQParser",
...

parsedqueryすべてのバリアントがASCII表現に置き換えられているわけではないことを示すフィールドを見てください。ASCIIFoldingFilterFactoryドイツ語のウムラウトが失われる可能性があるため、フィルターとして使用できません。場合によっては、からなどに変換さüれるueためです。

しかし、私が理解できないのは、なぜにíóúá変換され、どのように保持されiouaないのですか?éé

そして、これらすべての特別なボーカルをASCII表現に変換する方法はありますが、ウムラウトに変換することはできae Ae ue Ueますか? (Solr を再コンパイルする必要なし)

4

1 に答える 1

1

カスタム キャラクター マッピング ルールを探している場合は、ルールを含む構成ファイルを取得するMappingCharFilterFactoryを使用できます。Techproducts のサンプル スキーマはそれを示しています (コメント アウトされているため、最初の変更後に削除されます)。mapping-FoldToASCII.txtmapping- ISOLatin1Accent.txt を確認してください

于 2016-04-08T23:45:12.320 に答える