1

私はsolrに次のドキュメントを持っています

<doc>
  <str name="PackageName">A lot of devices on one drawing </str>
  ...

スキーマは PackageName を次のように定義します

<field name="PackageName" type="text_general_edge_ngram" indexed="true" stored="true" required="true"/>

どこ

<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.LowerCaseTokenizerFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.LowerCaseTokenizerFactory"/>
    </analyzer>
</fieldType>

ここで、ユーザーがクエリを実行するクエリを設定したいと思います

 http://...:8983/solr/vault/select?q=PackageName:"A lot"

返ってきますが、

 http://...:8983/solr/vault/select?q=PackageName:"B lot"

戻らないし、

現在

 http://...:8983/solr/vault/select?q=PackageName:B lot

 http://...:8983/solr/vault/select?q=PackageName:A lot  

ドキュメントを返し、" で囲んでください。どちらの場合も何も返されません。
クエリを変更するにはどうすればよいですか?
ありがとうございます。

4

1 に答える 1

1

EdgeNGramFilterFactory は、あなたの場合は 2 として定義されている minGramSize に定義されたサイズより小さいトークンを削除します。JIRAを確認してください
。また、クエリを実行packageName:"A Lot"すると、フィールド packageName で検索語が検索されます。
ただし、検索すると、 packageName:A LotSolr はpackageName:a defaultField:lotケースに一致するように見えるものを検索します。

于 2013-09-10T12:29:46.713 に答える