【问题标题】:query search on an index with two different documents type对具有两种不同文档类型的索引进行查询搜索
【发布时间】:2013-11-23 08:40:09
【问题描述】:

我有一个索引,其中包含异构文档。这些文档只有 1 个公共字段(个人 ID),例如:

文档 编号:7 内容:此示例内容文档有很长的文本 类型:内容

文档 编号:7 标题:示例文档 公众:是的 类型:元数据

我选择此解决方案是因为我想将长文本文档与元数据文档分开管理。

如果我执行这样的查询

+(content: example title: example) +public: yes

lucene 正确返回 id 为 7 的文档类型“元数据”,但如果我执行另一个:

+(content: long) +public: yes

lucene 没有将文档返回给我,因为子句 +public: yes(我的应用程序所必需的)对应于不在“内容”类型文档中的字段。

我的问题:我如何要求 lucene 将包含“公共”字段“yes”的“内容”文档返回到具有相同 id 的另一个文档中(只有一个查询)?

对不起我的英语,谢谢大家。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    如果您没有将“公共”字段设为必填项,它会起作用吗?所以:

    +(content: long) public: yes
    

    或者你可以在提交给 Lucene 之前从查询字符串中去掉“public”字段吗?

    【讨论】:

    • 元数据“公共”是必要的......我无法将具有相应元数据“公共”的文档类型“内容”返回为 false。是的,我可以从查询中删除公共条件,但是,如果我这样做,lucene 会返回我的“内容”文档,其中包含“真”和“假”的相关元数据。
    • 好的,我明白了。听起来你想做一个连接查询。不过,我认为您不能使用默认的 Lucene 查询解析器来做到这一点。如果不是太复杂,您可以编写一些东西来专门使用查询 API 来处理您的案例。或者,看起来 Solr 支持连接查询:wiki.apache.org/solr/Join,尽管我没有使用它们。
    • 很遗憾,现在我已经统一了这两个文档,因为这个问题把我变成了一个疯狂的程序员!
    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2021-11-05
    相关资源
    最近更新 更多