1
我正在使用Apache Solr和Solarium客戶端庫for PHP。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" />
是的,我正在尋找它的原因和解決方案。謝謝。 – umpirsky
我想你需要提供更多信息。提供的信息很難給你一個解決方案。如果您的查詢正確轉義,這一切取決於您的文檔如何編入索引。 – javanna
我沒有做任何特別的事情。我按照原樣對文檔進行索引,而不會轉義。如果文檔字段包含短劃線,我將它們編入索引(例如'foo-bar')。 – umpirsky