Несогласованность разбора Lucene - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть несогласованность в испытании Lucene.

  • 2 функции ниже, одна использует код для построения запроса, другая использует тот же текст, который сгенерирован из запроса.
  • Оба выполняются через один и тот же поисковик и индексы Lucene.
  • «База данных» Lucene состоит из одного документа с группами 5, 10, 15 и 20.
  • Один документ содержит «Kotlin» в качестве содержимого

Тем не менее, когда я выполняю поиск;запрос getCodeBased возвращает 0 документов;в то время как запрос getTextBased возвращает 1 документ. Как это возможно;тем более что я использовал текст запроса, сгенерированный из getCodeBased, и передал его в getTextBased ...

С уважением и благодарностью

    private fun getCodeBased() : Query {
        val term1 = Term("contents", "Kotlin")
        val term2 = Term("group", "6")
        val term3 = Term("group", "20")

        val subQuery = BooleanQuery.Builder()
            .add(TermQuery(term2), BooleanClause.Occur.SHOULD)
            .add(TermQuery(term3), BooleanClause.Occur.SHOULD)
            .build()

        val query = BooleanQuery.Builder()
            .add(TermQuery(term1), BooleanClause.Occur.MUST)
            .add(subQuery, BooleanClause.Occur.MUST)
            .build()

        println(query.toString())

        return query
    }


    private fun getTextBased() : Query {
        val mfq = MultiFieldQueryParser(arrayOf("contents", "group"), StandardAnalyzer())
        val query = mfq.parse("+contents:Kotlin +(group:6 group:20)") // working
        return query
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...