2017-09-15 20 views
0

バージョン6.6.0でLuceneとバージョン6.6.0でSolrを使用しています。Apache Solrのワイルドチャード検索が機能しない

クエリに入力するヒットの候補を示す検索ボックスを作成したいとします。

ここに私のアプローチです:

スキーマ(私だけmanaged-schemaファイルを持っている):

<copyField source="someField_a" dest="someField_a_wildcard"/> 

<field name="someField_at_wildcard" type="wildcard_type" indexed="true" stored="true" /> 

<fieldType name="wildcard_type" class="solr.TextField"> 
    <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    </analyzer> 
</fieldType> 

someField_adynamic fieldさ:

<dynamicField name="*_a" type="text_general" indexed="true" stored="true"/> 

私は入力フィールドに何かを入力すると、結果は得られるが、私が望むものは得られない:

someField_aは「ABC DE FG.pdf」

「ABC」と入力すると結果が表示されますが、私が進むにつれて結果が乱れてしまいます。

これを正しく設定するにはどうすればよいですか?

+0

あなたが行ったときに、あなたは何を間違って取得しましたか? – Mysterion

+0

@Mysterion一つのことは、それは完全な条件にマッチするだけです...それはSTRINGにマッチしますが、SやSTRなどにはマッチしません。 「SO」と入力すると「SO」で始まる結果が得られますが、「SO 102」と入力すると「SO 102」と表示されますが「SO 102」では表示されません。 – user3629892

+0

..正確にどのフィールドを検索していますか? 'somefield_a'または' someField_at_wildcard'ですか?管理下の分析ページでは、索引付けされた名前とクエリについて何を示していますか? – MatsLindh

答えて

0

whitespaceトークナイザを削除します。私はあなたがファイル名の検索をしていると仮定します?その場合、トークン化は望ましくない。

EdgeNGramフィルタとwhitespaceトークナイザを組み合わせると、EdgeNGramフィルタはトークンごとにngramの作成を開始します。

Windowsファイルの場合は、ファイル名の大文字と小文字を区別しない検索をsolr.LowerCaseTokenizerFactoryとしてください。

+0

まあ、私が入力するすべての文字についてsomethigを検索する検索をしたいと思います。フルネームと一致するだけではありません – user3629892

+0

これは、フィールドタイプを使用するフィールドでクエリする必要があります。この場合、それは 'someField_at_wildcard'です。文字通りのマッチングが必要で、文字とトークンの順序が重要な場合は、トークン化する必要はありません。 – drjz

+0

申し訳ありませんが、情報ありがとう!私は本当に間違った分野に照会していました。 – user3629892

関連する問題