У меня есть несогласованность в испытании 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
}