“”黑实验室*“”宠物商店“”〜5 Lucene的(接近搜索与多字词组)(“”black lab*“

2019-09-17 14:48发布

我怎样才能做到在Lucene的两个多字短语邻近搜索。 例如,我想找到所有黑实验室*(黑色拉布拉多,黑色拉布拉多等)withing短语“宠物商店”的5个字。 其分析我应该使用? 哪个查询分析器将建议? 我用Lucene.NET工作。 我已经移植了ComplexPhraseQueryParser从Java到C#,但解析器似乎并没有做的伎俩(或者也许我只是用错了)。 我刚开始使用Lucene的,所以你的帮助是非常赞赏。

Answer 1:

您可以使用SpanQuery此:

new SpanNearQuery(
    new SpanQuery[] {
        new SpanNearQuery(
            new SpanQuery[] {
                new SpanTermQuery(new Term(FIELD, "black")),
                new SpanMultiTermQueryWrapper<WildcardQuery>(new WildcardQuery(new Term(FIELD, "lab*"))),
            },
            0,
            true),
        new SpanNearQuery(
            new SpanQuery[] {
                new SpanTermQuery(new Term(FIELD, "pet")),
                new SpanTermQuery(new Term(FIELD, "shop")),
            },
            0,
            true),
    },
    5,
    true);

默认Lucene的QueryParser不支持范围查询,但你可以尝试环绕查询分析器 。 我找不到别的不多于文档的方式。

您也可以找到这个答案和这个博客帖子有用。



Answer 2:

你只需要设置的斜率 。



文章来源: “”black lab*“ ”pet shop“”~5 in Lucene (proximity search with multi-word phrases)