2014-05-01 84 views
-1

我是SOLR的新手,這是我在此列表中的第一篇文章。 我一直在解決這個問題幾天。我嘗試了我在谷歌中找到的所有東西,但看起來像我缺少一些東西。搜索令牌不會返回任何結果

這裏是我的問題: 我都稱爲一個字段:DBASE_LOCAT_NM_TEXT它包含諸如值:CRD_PROD我們的目標是能夠要麼是把確切的字符串「CRD_PROD」或它的一部分來搜索這個領域(由記號化「 _「)像‘CRD’或‘PROD’

目前: 該查詢返回的結果:q = DBASE_LOCAT_NM_TEXT:CRD_PROD但這並不:q = DBASE_LOCAT_NM_TEXT:CRD我想知道爲什麼第二個查詢不返回任何結果

以下是我如何配置該字段:

<field name="DBASE_LOCAT_NM_TEXT" type="text_general" indexed="true" stored="true" required="false" multiValued="false"/> 

,這裏是我如何配置的字段類型:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 

    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 

    </analyzer> 

我也是用在SOLR管理控制檯分析面板。它示出了這一點: WT CRD_PROD

WDF CRD_PROD CRD PROD CRDPROD

SF CRD_PROD CRD PROD CRDPROD

LCF crd_prod CRD PROD crdprod

SKMF crd_prod crd 督促 crdprod

RDTF crd_prod CRD 督促 crdprod

我不知道這是否是相關或不相關,但該指數使用使用Lucene接口的Java程序創建的。它使用StandardAnalyzer進行編寫,並將該字段配置爲標記,索引和存儲。這會影響SOLR配置嗎?

你能幫我理解我缺少什麼以及如何進行調試嗎?

感謝, Yetkin

回答

0

因此,該指數沒有被編入索引的Solr呢?它是在完全獨立的應用程序中創建的?

在這種情況下,您的「索引」分析器與它無關,因爲它永遠不會被使用。通常,您應該在索引和查詢時使用相同的分析器設置。有例外,但堅持,除非你有一個理由做其他。如果該字段使用StandardAnalyzer,只是索引:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/> 
</fieldtype> 

然而,真的不知道到底爲什麼你沒有得到匹配。該索引是否使用舊版本的lucene構建?聽起來像是這樣,所以創建它的版本可能也是一個問題。

+0

是的。這是Java程序。 – user3593000

相關問題