2011-08-02 2 views
0

solr検索が実装されており、すべて正常に動作しています。ただの簡単な質問です。ユーザーが私たちのデータベースでたとえばニューホンダシビック。 Solrは、 "New"、 "Honda"、 "Civic"の3つのキーワードをすべて含む結果のみを返します。Solrを設定するとクエリのすべてのキーワードと一致しない

私はどのようにして3つのキーワードNEW HONDA CIVICとHONDA CIVICというキーワードが少ない結果を返すことができますか?

+0

どのようなフィールドタイプですか? –

答えて

3

あなたのスキーマがアナライザがそれをより小さな用語に分割できるようにフィールドを定義していることを確認したいと思うでしょう。例:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100" omitNorms="false"> 
    <analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StopFilterFactory"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
</analyzer> 
</fieldType> 

標準のTokenizerFactoryは、テキストを単語に分解します。 StandardFilterFactoryは頭文字からドットを取り除き、トークンの最後からドットを削除します。 LowerCaseFilterFactoryは大文字小文字の問題を取り除きます。 StopFilterFactoryは、共通の英語の単語を削除します。 PorterStemFilterFactoryは、-ing、-es、およびそのような接尾辞のような末尾の単語を正規化します。

あなただけを使用する場合:

<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="false"/> 

あなたが唯一の文字列全体に一致させることができます。

これらの変更を有効にするには、再インデックスする必要があります。 Solrがインデックス作成のためのデータとクエリされるデータをどのように処理するかについては、次を参照してください。http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters

+0

ありがとうございますMike !! –

+0

デフォルトの演算子としてORを使用してこれを実現できませんか? <! - SolrQueryParser configuration:defaultOperator = "AND | OR" - > – ThinkCode

+0

これは良い点です。PeterはORを(schema.xmlで指定された)defaultOperatorとして使用するようにしたいと考えています。しかし、ORはdefaultOperatorのデフォルト値であるため、私は自分のスキーマがどのように設定されたかを想定しています。 defaultOperatorとしてORを使用しても、個々の単語に一致させるためにテキストフィールドをトークン化する必要があります。 – Mike

関連する問題