【问题标题】:What is the QueryParser's syntax for proximity search?QueryParser 的邻近搜索语法是什么?
【发布时间】:2012-05-05 10:09:54
【问题描述】:

我一直在尝试使用 Lucene 3.6 实现邻近搜索。我选择了SpanNearQuery,这几乎对我有用,但我的老师说QueryParser 可以以更好的方式做到这一点(它还可以使用分析器过滤查询,与SpanNearQuery 不同)。谁能告诉我查询的语法?最近几个小时我一直在互联网上搜索。 :(

【问题讨论】:

    标签: lucene information-retrieval query-parser


    【解决方案1】:

    【讨论】:

    • 是的,我做到了,但它对我不起作用,更可能是我犯了一些错误。这就是我所做的:QueryParser queryParser= new QueryParser(Version.LUCENE_36, "myField", analyzer); Query query= queryParser.parse("word1 word2 ~1"); 它在运行时给出了关于模糊搜索的错误信息。但是如果我在字符串后面加上“~1”,我的 Eclipse 会给出语法错误。你能帮我看看语法吗?
    • 您需要在查询字符串中添加引号。你写的引号只是让Java明白你正在写一个字符串,但它会读为word1 word2 ~1(不带引号),你需要写queryParser.parse("\"word1 word2\"~1")(反斜杠用于转义,以便Java不解释它们作为字符串的结尾
    • 谢谢。有用。顺便说一句,它不是更像“双字索引”吗?我采用两个术语并提及它们允许的最大距离,并与其他术语一起采用 AND。我很感激你的回应。 :)
    • 我想出了使我的三字、四字查询也能正常工作的方法。这很简单。查询字符串是这样的"\"word1 word2\"~1 AND \"word3\"~0 AND \"word4\"~0"。它可能会在未来帮助某人。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2014-07-27
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多