2011-06-27 18 views
1

Apache Solrが新しく、「normalizedContents」および「text」というフィールドに対して検索用語を使用してクエリを作成しようとしています。Apache Solrの照合結果が一致しません

すべての検索語句がフィールドに存在する必要があります。問題は、私は矛盾した結果を得ている。

  • normalizedContents:たとえば

    は、Solrのインデックスは=

    私はSolrのWebインターフェイスでこれらのクエリを試してみました "EDOUARD SERGEウィルフリッドEDOS0004 UNEはCOMPLEMENTAIREに言及し、" 値のnormalizedContentsフィールドを持つ1つの文書のみを持っています: (edouard * AND une)結果を返します
  • 正規化された内容:(EDOUAR * AND une)は何も返しません
  • normalizedContents:(edouarとUNE)返さないもの
  • normalizedContents:(edouar *とuned)を返します(edouar *と国連は)
  • normalizedContents(ない "アン" という言葉はありませんが)、結果を返します。結果

はここのschema.xmlでnormalizedContentsの宣言だ(何の "uned" という言葉はありませんが):

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

ので、ワイルドカードおよびAND演算子は、期待される動作に従っていません。私は間違って何をしていますか?

ありがとうございました。

+0

normalizedContentsに適用されるトークンフィルタはありますか? 3行目はLowerCaseフィルタで、最後の2つはWSフィルタ(空白)で解決できます。 –

答えて

0

デフォルトでは、フィールドタイプのテキストは、コンテンツ(solr.SnowballPorterFilterFactory)に基づいています。したがって、 'un'と 'uned'は一致しません。クエリとインデックスアナライザの両方にsolr.LowerCaseFilterFactoryフィルタがない可能性があります。したがって、EDUAR *は一致しません。エドゥアールはエドゥアールに根を下ろされていないので、第4回は一致しません。完全一致が必要な場合は、より限定されたフィルタセットを持つタイプの別のフィールドにデータをコピーする必要があります。例えば。 solr.WhitespaceTokenizerFactory

投稿する<fieldType name="text">セクションをスキーマから転記すると、すべてを理解するのに役立つ場合があります。

関連する問題