2016-11-22 16 views
0

文字列1604-04のみを含むタイトルのSolrで用語を検索しようとしています。しかし、結果は1604または04を含むもので戻ってきます。1604-04の正確な文字列をsolrに検索させる構文は何でしょうか?ハイフンで正確に検索する

答えて

0

あなたはまた、【選択クラシックトークナイザは、次の例外を除いて標準トークナイザと同じ動作を維持しクラシックトークナイザを使用することができます: - 言葉の数字がある場合を除き

言葉は、ハイフンで分割されていますその場合、トークンは分割されず、数字とハイフンが保持されます( )。

つまり、誰かが1604-04を検索した場合、このトークナイザは検索文字列を2つのトークンに分割しません。

+0

ありがとうございます。このトークナイザはトリックを行いました。 – pcroadkill

1

完全一致のみを使用する場合は、KeywordTokenizerが付いた文字列フィールドまたはテキストフィールドをトークナイザとして使用します。これらはあなたのトークンを1つのエントリとしてそのまま保持し、複数のトークンに分割しません。

違いは、KeywordTokenizerでテキストフィールドを使用する場合でも、LowercaseFilterなどの他のフィルタを適用できますが、文字列フィールドはそれ以上の処理を行わずにそのままそのまま保存されます。

+0

ありがとうございました。それは私たちを正しい解決に導きます。実際には代わりにClassic Tokenizerを使用しました。 – pcroadkill

0

あなたの分析装置は、 "1604-04"を2つの用語 "1604"と "04"に分割しています。それをやめるために分析を変更する方法についての回答が届きました。

あなたの分析を変更することは、最良の解決策ではありません(あなたが書いたことに基づいて完全に確信することはできません)。 phrase queryを使用すると、これを行う通常の方法になります。あなたは引用符でラップすることにより、フレーズのクエリを使用することができます。

field:"1604-04" 

これはまだ分析し、二つの用語に分割し、それは順番に、それらの用語を検索しますします。したがって、そのクエリは "1604-04"と "1604 04"と一致しますが、ではなく、 "1604 some other stuff 04"と一致します。

関連する問題