1
PHP 용 Solarium 클라이언트 라이브러리가있는 Apache Solr을 사용하고 있습니다.Apache Solr Escape Query
문제는 특수 문자 인 대시 (-
)입니다.
내 검색어에 대시가있을 때 일치하는 항목이 없습니다.
Solarium_Query_Helper::escapeTerm()
을 사용하여이 문제를 해결하려고했습니다. 하지만 나는 다시 성냥을 얻지 못한다. 대시는 백 슬래시 \
으로 이스케이프 처리됩니다.
이 문제의 해결 방법은 무엇입니까?
색인을 생성 할 때 모든 필드를 이스케이프 처리 할 생각 이었지만 좋은 아이디어는 아닙니다.
<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" />
예, 그 이유와 해결책을 찾고 있습니다. 감사. – umpirsky
그러면 더 많은 정보를 제공해야 할 것 같습니다. 제공된 정보를 사용하면 솔루션을 제공하기가 어렵습니다. 쿼리가 올바르게 이스케이프 된 경우 문서가 인덱싱되는 방식에 따라 쿼리가 모두 달라집니다. – javanna
나는 특별한 일을하지 않았다. 탈출하지 않고 문서를 그대로 색인화했습니다. 문서 입력란에 대시가 포함되어있는 경우 해당 입력란을 그대로 색인화했습니다 (예 :'foo-bar'). – umpirsky