13

如何在数组字段中搜索?

我正在使用具有默认设置的 solr 4.2。我使用 SolrNet 索引了一些 html 和 pdf 文档。这是我使用管理员搜索进行搜索时此类文档的示例结果*:*

enter code here
<doc>
<str name="id">2</str>
<date name="last_modified">2011-12-19T17:33:25Z</date>
<str name="author">name</str>
<str name="author_s">name</str>
<arr name="title">
  <str>CALIFORNIA CODES</str>
</arr>
<arr name="content_type">
  <str>application/pdf</str>
</arr>
<str name="resourcename">T01041.pdf</str>
<arr name="content">
  <str> PDF text here </str>
</arr>
<long name="_version_">1431314431195742208</long>
</doc>

搜索使用content:*返回 0 个结果。

4

3 回答 3

17

而不是content:*尝试使用content:[* TO *]. 这将获取所有字段content非空的文档。

对于查询数组/多值字段,这取决于您想要做什么。如果您有一个多值字段,例如:

<arr name="tag_names">
    <str>death</str>
    <str>history</str>
    <str>people</str>
    <str>historical figures</str>
    <str>assassinations</str>
</arr>

并且您想查找具有两者的文档,然后death发出类似的查询historytag_names

q=tag_names:(death AND history)

要执行 OR,请使用

q=tag_names:(death OR history)
于 2013-04-04T00:21:48.937 回答
3

你的问题的答案很简单。

您的Schema.xml文件显示字段name="content" indexed="false"即您的内容字段不可搜索。因此,如果您搜索“内容”的任何内容,它将返回 0 个结果。

请更改您的 schema.xml 文件并将内容字段设置为 indexed="true",以便使字段可搜索。

保存文件
重启 Solr。
清除索引。
重新索引文档

现在您将能够搜索内容:*

如果能解决您的问题,请采纳答案...

于 2013-04-04T08:23:27.707 回答
-1

text:*作品。它返回我所有的文档。

我从架构中得到了这个:

     <!-- Main body of document extracted by SolrCell.
        NOTE: This field is not indexed by default, since it is also copied to "text"
        using copyField below. This is to save space. Use this field for returning and
        highlighting document content. Use the "text" field to search the content. -->
   <field name="content" type="text_general" indexed="false" stored="true" multiValued="true"/>


   <!-- catchall field, containing all other searchable text fields (implemented
        via copyField further on in this schema  -->
   <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
于 2013-04-04T01:50:50.570 回答