1

私のscheme.xlmは次のようになります:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>      
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>      
</fieldType>

<!-- The searched field -->
<field name="product_name" type="text" indexed="true" stored="true"/>

これにより、フィールドが小文字でイ​​ンデックス付けされ、検索クエリも小文字に変換されます。

探したいデータは「Nokia Lumia 610」

「nokia」を検索すると期待どおりの結果が得られますが、「Nokia」(大文字の N) のみを検索すると結果がありません。

上記の「アナライザー」は、検索クエリではなく、インデックスに対してのみ小文字を実行します。

これはエラーですか?SOLR インデックスと検索クエリを強制的に小文字にする方法は?

4

2 に答える 2

3

検索クエリの変換は、クエリの種類と使用しているアナライザーによっても異なります。たとえば、select アナライザーにリクエストを送信している場合、上記は検索クエリを小文字に変換しません。リクエストを送信する場合:-

http://url/solr/select?q=Nokia

選択アナライザーがフィールドタイプ定義に存在しないため、上記は小文字に変換されません。次のようにコードを変更する必要があります:-

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
            <analyzer type="index">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>      
            <analyzer type="query">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
            <analyzer type="select">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
    </fieldType>

上記が機能しない場合は、送信しているリクエストと、リクエストに debugQuery=true を追加した出力を投稿してください。

于 2013-03-17T04:37:18.863 に答える
0

一緒に

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
            <analyzer type="index">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>      
            <analyzer type="query">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
            <analyzer type="select">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
    </fieldType>

schema.xml で。

head.vm change return $("#q").val(); で $("#q").val().toLowerCase(); を 返す InCaseSensitive オートコンプリート機能用。大文字で検索すると結果が得られるように。

于 2015-05-20T13:10:46.423 に答える