2011-10-21 9 views
1

私がこのように検索すると、q = * 6205 * q = 6205を検索してより多くの結果を得ました。それは良いです。 しかし、私の問題は q = 6205-2RSを検索するか、 q = 6205 \ -2RS私はいくつかの結果を得ましたが、検索文字列に*を入れると結果は得られません(q = * 6205-2RS *またはq = * 6205 \ -2RS *)なぜですか?apache solr search with *

* 6205-2RS *を検索したいが、アイテム名の途中でもこの文字列を検索したい。

答えて

1

ワイルドカードクエリは分析されません。
ワイルドカードを使用して6205-2RSを検索している場合は、小文字のフィルタ、worddelimitersなどの解析を行わずにそのまま検索します。

フィールドのスキーマ定義とは何ですか?それはテキストフィールドか文字列フィールドタイプですか?

text_generalの定義は以下の通りである -

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <!-- in this example, we will only use synonyms at query time 
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
    --> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

トークンを生成する6205-2RSのインデックス時間で分析でトークナイザと小文字のフィルタなし解析など
が検索中に行わ6205,2rs、その6205-2RSのためのその検索は、結果を見つけることはありません。

フィールドタイプをstringに変更します。これは結果と一致する必要があります。

+0

フィールドのタイプが "text_general" – krinn

+0

答えがありがとう、タイプを変更した後にインデックス全体を再インデックスする必要がありますか?または単にapache solrを再起動しますか? – krinn

+0

yupフィールドタイプを変更するには、再インデックスが必要です。 – Jayendra