我必须在Solr中索引和搜索文档。我还需要过滤,分面和分页功能。我的(简化)理想文档结构如下:
<doc>
<id>1</id>
<title>A title</title>
<description>A description...</description>
<category>speech</category>
<sentences>
<sentence>
<n>1</n>
<from>00:00:00</from>
<to>00:00:10</to>
<tag>presentation</tag>
<transcript>Hello, my name is Alberto!</transcript>
</sentence>
<sentence>
<n>2</n>
<from>00:00:10</from>
<to>00:00:15</to>
<tag>talk</tag>
<transcript>and blah blah blah</transcript>
</sentence>
</sentences>
</doc>
文档可以有很多句子。每个句子都可以有多个标签。
我想在title
,description
和transcript
上执行搜索,过滤tag
(句子级别)和category
(根级别),并在category
和tag
上获得分面。
一些要求是:
q=text:"Alberto&fq=tag:presentation
,则应返回文档1。但如果我搜索q=text:blah&fq=tag:presentation
,则不应返回任何内容。我找到的唯一可行解决方案是使用分组(group=true&group.facet=true
)并展平文档结构。这里的问题是我必须在每个文档(也是识别句子的文档)中复制分面字段(例如category
),否则分面不能正常工作。
同样重新索引理想文档需要删除文档的每个句子,然后重新索引文档组。
有更好的方法吗?