Php ApacheSolr转义查询

Php ApacheSolr转义查询,php,solr,search-engine,solarium,Php,Solr,Search Engine,Solarium,我正在使用ApacheSolr和PHP客户端库 问题是特殊字符,一个破折号- 当我的搜索查询中出现破折号时,我不会得到任何匹配项 我试图通过使用Solarium\u Query\u Helper::escapeTerm解决这个问题。但我再也找不到匹配的了。破折号用反斜杠“”转义 这个问题的解决方案是什么 在编制索引时,我曾考虑转义所有字段,但这听起来不是一个好主意 以下是my schema.xml的一部分: 这些是一些需要转义的特殊字符。它们被列为: 您可以使用反斜杠\来避开它们。我不是日光浴专

我正在使用ApacheSolr和PHP客户端库

问题是特殊字符,一个破折号-

当我的搜索查询中出现破折号时,我不会得到任何匹配项

我试图通过使用Solarium\u Query\u Helper::escapeTerm解决这个问题。但我再也找不到匹配的了。破折号用反斜杠“”转义

这个问题的解决方案是什么

在编制索引时,我曾考虑转义所有字段,但这听起来不是一个好主意

以下是my schema.xml的一部分:


这些是一些需要转义的特殊字符。它们被列为:


您可以使用反斜杠\来避开它们。我不是日光浴专家,但您使用的功能似乎可以完成需要完成的工作。可能还有另一个原因使您无法获得预期的匹配项。

这些字符是您需要转义的特殊字符。它们被列为:


您可以使用反斜杠\来避开它们。我不是日光浴专家,但您使用的功能似乎可以完成需要完成的工作。可能还有另一个原因导致您无法恢复预期的匹配。

是的,我正在寻找原因和解决方案。谢谢。我想你需要提供更多的信息。根据所提供的信息,很难给您提供解决方案。如果你的查询被正确转义,这完全取决于你的文档是如何被索引的。我没有做任何特别的事情。我按原样为文档编制索引,但没有转义。如果文档字段包含破折号,我会按原样为它们编制索引,例如foo-bar。您可以发布您要查询的字段的schema.xml字段类型定义吗?查看一下。StandardTokenizerFactory可以发挥一些神奇的作用,但您在查询和索引时都应用了它,所以这应该不是问题。您是否尝试查看solr分析页面以检查字段是如何被索引和查询的?是的,我正在寻找原因和解决方案。谢谢。我想你需要提供更多的信息。根据所提供的信息,很难给您提供解决方案。如果你的查询被正确转义,这完全取决于你的文档是如何被索引的。我没有做任何特别的事情。我按原样为文档编制索引,但没有转义。如果文档字段包含破折号,我会按原样为它们编制索引,例如foo-bar。您可以发布您要查询的字段的schema.xml字段类型定义吗?查看一下。StandardTokenizerFactory可以发挥一些神奇的作用,但您在查询和索引时都应用了它,所以这应该不是问题。您是否尝试过查看solr分析页面以检查字段是如何被索引和查询的?
 <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" />
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \