我正在使用Solr开发一个搜索应用程序,这是搜索图书所必需的。分为章节。一本书可能看起来像这样:
title: "book title"
author: "mr whoever"
chapters: [
{
title: "some chapter title"
text: "blah blah blah"
},
{
title: "some other title"
text: "blah blah blah"
},
... etc.
]
用户正在搜索图书而不是章,因此在给出内部所有章节文字的情况下,最佳结果必须是最相关的图书。
用户需要查看书中哪些章节匹配,有关这些章节的信息以及每章有多少匹配。
Solr支持多值字段(即每本书有多个章节),但书籍文档中每个字段不可能有两个字段(标题和文本)。
我不知道这是否必要。每一章只有一本书所有,所以看起来我们可以把它们全部放在一个文档中而不需要太多重复。
包含" chapter1text_txt"," chapter1title_txt"等字段和" chapter2text_txt"例如,只连接独立于solr的每章信息,所以solr不知道" chapter1text_txt"," chapter1title_txt"是同一件事的一部分。
配置schema.xml以支持和搜索此类文档的正确方法是什么?
答案 0 :(得分:0)
到目前为止,最好的解决方案是为chapter_title
和chapter_text
使用多值字段,并在上传文档中强制执行这些值的一致排序,因此第一个chapter_title
始终对应到第一个chapter_text
等等。
这里是schema.xml的一部分:
<field name="report_title"
type="text_en" indexed="true" stored="true"/>
<field name="chapter_title"
type="text_en" indexed="true" stored="true" multiValued="true"/>
<field name="chapter_text"
type="text_en" indexed="true" stored="true" multiValued="true"/>
这是一种折衷方案,因为索引无法了解chapter_title
和chapter_text
之间的这种关系,因此无法在 X 中查询&#34;章节标题中的标题和 Y &#34;。
我仍然没有找到这样做的方法,但我在考虑使用一个覆盖整个文档的大型片段后,考虑使用突出显示并计算突出显示的术语数。