2011-10-21 91 views
1

當我搜索這樣:q = * 6205 *我得到更多的結果,然後搜索q = 6205,它是好的 但我的問題是: 當我搜索q = 6205-2RS或q = 6205 \ -2RS我得到了一些結果,但是當我把*放在搜索字符串中時,我沒有收到任何結果(q = * 6205-2RS *或q = * 6205 \ -2RS *)爲什麼?apache搜索與*

我想搜索* 6205-2RS *,但我想solr搜索這個字符串也在項目名稱的中間。

回答

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,並且不會找到任何結果。

將字段類型更改爲字符串,並且應該與結果匹配。

+0

該字段的類型是「text_general」 – krinn

+0

感謝您的答案,我需要在改變類型後重新索引整個索引嗎?或者只是重新啓動apache solr? – krinn

+0

如果更改字段類型,則需要重新索引。 – Jayendra