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>