2012-12-27 64 views
0

我不想在索引中搜索某些數字,但我遇到了某些結果的麻煩。 (我使用edismax。)Solr StandardTokenizerFactory tokinize on dots過濾器

例子:

Term in index I want to search: b1.123.456 
    Query I use is b1 123 456 (no spaces) 

這並不因爲工作。是不一樣的一個 - (我讀過的文檔) 我找了一個解決方案,我發現我不得不使用我的領域篩選:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapchar.txt" /> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapchar.txt" /> 
    <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> 

這是我的字段類型,在mapchar包含「 「=>」「

現在,當我嘗試搜索:

b1.123.456 returns all results for each token (normal behaviour) 
    "b1.123.456" returns what I'm looking for. 
    "b1 123 456" returns what I'm looking for. 
    b1 123 456 **returns nothing** 

爲什麼不詞組搜索返回結果爲0正常edismax查詢?

編輯:

我發現一個錯誤在日誌中,當我使用的最後一個查詢:

<record> 
    <date>2012</date> 
    <millis></millis> 
    <sequence></sequence> 
    <logger>org.apache.solr.servlet.SolrDispatchFilter</logger> 
    <level>SEVERE</level> 
    <class>org.apache.solr.common.SolrException</class> 
    <method>log</method> 
    <thread>12</thread> 
    <message>null:java.lang.NumberFormatException: For input string: "" 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at org.apache.solr.util.SolrPluginUtils.calculateMinShouldMatch(SolrPluginUtils.java:563) 
    at org.apache.solr.util.SolrPluginUtils.setMinShouldMatch(SolrPluginUtils.java:518) 
    at org.apache.solr.search.ExtendedDismaxQParser.parse(ExtendedDismaxQParserPlugin.java:264) 
    at org.apache.solr.search.QParser.getQuery(QParser.java:143) 
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:118) 
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:185) 
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129) 
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1699) 
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:455) 
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:276) 
    at ... 
</message> 
</record> 

回答

0

由於默認查詢處理工作(/選擇),我一開始以爲是什麼我的查詢處理程序錯誤。

爲了找出什麼是錯誤的,我開始禁用我自己的請求處理程序的一些部分。

<!--<str name="mm"></str>--> 

空毫米可以給你錯誤

我曾經有一個毫米參數,但我真的不再需要它了,所以我把它留空...