Solr Search を次のようにする必要があります
"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>
これをWebで検索したところ、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>
そうしても、&
検索語で解析されません。
作成したいのは、solr が「成功と失敗」で検索する必要があり、特殊文字を削除しないようにすることです。
誰もがこれを行う方法を知っていますか??