我們需要Solr的搜索像搜索Solr的:搜索與特殊字符與短語搜索
"Success & Failure"
"Working 50%"
但Solr的查詢分析器消除所有的特殊字符,但如果我轉義序列添加到它。
我的搜索查詢如下
http://localhost:8080/solr/core0/select?q=%22Success%20\%26%20Failure%22&debugQuery=on
以下
提到是debugQuery它。
<lst name="debug">
<str name="rawquerystring">"Success & Failure"</str>
<str name="querystring">Success & Failure"</str>
<str name="parsedquery">PhraseQuery(text:"success failure")</str>
<str name="parsedquery_toString">text:"success failure"</str>
<lst name="explain"/>
<str name="QParser">LuceneQParser</str>
<lst name="timing"></lst>
</lst>
...我已經尋找這種過度的網絡,我得到的結果說,特殊字符應該被索引,使其工作在默認情況下爲SOLR不索引任何特殊字符。
要做到這一點,我已經添加solr.WordDelimiterFilterFactory
我TextField
定義
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<!-- <charFilter class="solr.MappingCharFilterFactory" mapping="char-mapping.txt"/>-->
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
splitOnCaseChange="0"
splitOnNumerics="0"
stemEnglishPossessive="0"
generateWordParts="0"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
types="wdfftypes.txt"
/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
splitOnCaseChange="0"
splitOnNumerics="0"
stemEnglishPossessive="0"
generateWordParts="0"
generateNumberParts="0"
catenateWords="0"
catenateNumbers="0"
catenateAll="0"
preserveOriginal="1"
types="wdfftypes.txt"
/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
althohg這樣做,它不會在搜索詞解析&
。
想做成,solr應該用「成功&失敗」搜索,並且不應該消除特殊性。
有人有什麼想法,該怎麼做?
感謝@克里斯Eventy答覆,我不需要wordelimiter工廠,我已經添加它來保存'&'只在我的文本。我已將模式更改爲使用PatternTokenizer Factory和指定的標記。和幾乎工作:) – meghana 2013-04-17 12:06:10