/ / solr完全検索 - ハイフン - search、solr、lucene

ハイフンで厳密に検索する - 検索、solr、lucene

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

回答:

回答№1は0

あなたも使用することができます 古典的なトークナイザーClassic Tokenizerは、以下の例外を除いてStandard Tokenizerと同じ動作を維持します。

単語に数字がない限り、単語はハイフンで分割されます。その場合、トークンは分割されません。 数字とハイフンは保持されます。

これは、誰かが1604-04を検索した場合、このTokenizerが検索文字列を2つのトークンに分割しないことを意味します。


回答№2の場合は1

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

違いは、テキストフィールドを使う場合です。KeywordTokenizerを使用しても、LowercaseFilterなどの他のフィルタを適用できますが、文字列フィールドには何も逐語的に格納され、それ以上処理することはできません。


回答№3の場合は0

アナライザは「1604-04」を「1604」と「04」の2つの用語に分割しています。分析を変更してそれをやめる方法について回答を得ました。

あなたの分析を変更することは最善の解決策ではありません(あなたが書いたものに基づいて「完全に確信できる」というわけではありません)。を使って フレーズクエリ これが通常の方法です。フレーズクエリを引用符で囲むことで使用できます。

field:"1604-04"

これでも分析して2つの用語に分割しますが、それらの用語を順番に探します。そのため、そのクエリは "1604-04"と "1604 04"に一致しますが、 ない "1604その他のもの04"。