PHP用のSolariumクライアントライブラリでApache Solrを使用しています。
問題は特殊文字、ダッシュ ( -
) です。
検索クエリにダッシュがあると、一致するものがありません。
を使って解決してみましたSolarium_Query_Helper::escapeTerm()
。しかし、再び一致するものはありません。ダッシュはバックスラッシュでエスケープされています\
。
この問題の解決策は何ですか?
インデックス作成時にすべてのフィールドをエスケープすることを考えていましたが、それは良い考えではないようです。
これが私の一部ですschema.xml
:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<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>
...
<fields>
...
<field name="myfield" type="text_general" indexed="true" stored="true" />
</fields>
...
<defaultSearchField>text</defaultSearchField>
<copyField source="myfield" dest="text" />