5

我在 Solr 中执行搜索时遇到了困难。我的 Solr 有一个多值字段,如下面的文档:

<int name="id">2166324592435</int>
...others fields
<arr name="Series">
   <str>The Walking Dead<\str>
   <str>Game of Thrones<\str>
<\arr>

多值字段系列具有文档引用的电视系列。在上面的例子中,我的文档提到了《行尸走肉》和《权力的游戏》。我可以拥有一个、两个或更多系列甚至没有系列的文档。

我想做的是在 Solr 中搜索。我想给出我想要的系列,Solr 应该返回关于我的查询的文档。我试过了,但我做不到。我尝试了以下方法:

q=series:The Walking Dead or series:Game of Thrones or ...&wt=json

我觉得我做错了。正确的方法是什么?

提前致谢

蒂亚戈

4

5 回答 5

8

尝试这样的事情:
series:("The Walking Dead" OR "Game of Thrones")

于 2015-01-27T13:50:13.953 回答
3

除了@user1452132 的回答 -

搜索q=series:The Walking Dead时,仅the在系列字段walking dead中搜索,而在默认搜索字段中搜索。

形成的查询将是系列:或文本:(行尸走肉)

您可以在请求 URL 中使用 debugQuery=on 调试查询。

您可以使用Dismax 查询处理程序使其更易于管理。

于 2012-07-09T07:12:02.427 回答
2

fq参数中使用(过滤查询),

例如

    name:("Java" OR "Python")
    name:("Java" AND "Web")

    // multivalued fields
    author_ids:(1733 OR 58)
    author_ids:(1733 AND 58)

Solr 网址编码:

  • ':' 变成 '%3A'
  • 空格变成'+'

因此,您可能会得到这样的 url:

http://localhost:8983/solr/xxx/select?q=programming&fq=title%3A ("Java"+AND+"web")&wt=json&indent=true&defType=edismax&qf=title&stopwords=true&lowercaseOperators=true

于 2015-09-01T07:55:04.363 回答
1

根据搜索的意图,尝试以下两个搜索

系列:“行尸走肉”或系列:“荆棘游戏”

系列:(行尸走肉)或系列:(荆棘游戏)

请阅读solr 查询语法和底层Lucene 查询语法

于 2012-07-09T01:23:12.670 回答
0

我认为您的实际问题是使用OR小写字母。当您执行类似操作时,将or在 中搜索该值defaultTextField。如果您的查询中有空格,也不要忘记加上引号 - 并且您正在寻找完全匹配的内容。

于 2013-08-23T14:53:39.503 回答