【问题标题】:How can I add both AND and OR operators in Solr 5.5.0如何在 Solr 5.5.0 中同时添加 AND 和 OR 运算符
【发布时间】:2017-05-08 11:03:21
【问题描述】:

我正在使用 Solr 5.5.0,目前该应用程序正在使用“AND”运算符进行搜索,但未指定它。例如:我搜索 programmer developer,它给了我带有单词程序员和开发人员的文件的结果。配置在 solrconfig.xml

中完成
<str name="mm">100%</str>

但我现在需要对其进行更改以使其同时使用两个运算符:

  1. 当我写 programmer AND developer 并给我包含这两个词的文件的结果时;
  2. 当我写 programmer OR developer 并给我包含一个或另一个单词的文件的结果时;

你能告诉我我应该做什么以及如何做吗?我上网查了资料,没弄明白。

【问题讨论】:

    标签: java solr lucene solr5


    【解决方案1】:

    据我了解,您在 SOLR 中有一个字段,您需要在该字段上搜索单词。我将 SOLR 字段命名为“job”,其值为“programmer”或“developer”。 您不需要更改 solrconfig 中的任何内容,您可以在查询中进行更改。

    SOLR 使用的默认查询解析器是Standard Query Parser。此解析器支持 AND、OR 等布尔运算符。

    你可以像这样搜索结果:

    寻找程序员和开发者

    localhost:8983/solr/select?q=job:programmer AND job:developer
    

    用于搜索程序员或开发人员

    localhost:8983/solr/select?q=job:programmer OR job:developer
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您可以通过在您的 requestHandler 上设置默认值来在 solrconfig.xml 中定义默认运算符:

      <requestHandler name="search" class="solr.SearchHandler" default="true">
          <lst name="defaults">
            <str name="q.op">AND</str>
            ...
      

      LocalParams。假设我们有现有的查询参数

      q=solr rocks
      

      我们可以为这个查询字符串加上 LocalParams 前缀,以便为查询解析器提供更多信息,例如将 lucene 查询解析器的默认运算符类型更改为“AND”,将默认字段更改为“title”:

      q={!q.op=AND df=title}solr rocks
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-28
        相关资源
        最近更新 更多