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