Отвечая на мой собственный вопрос.Для тех, кому это может быть интересно, я наконец-то обошёл задачу по:
Итерации по всем поисковым словам входной строки
Поиск и получение всех DocID, соответствующих каждому слову, используя:
selectionDict = list(r.table('mytable').filter( \
( r.row["field1"].match("(?i)"+searchWord)) \
| (r.row["field2"]["body"].match("(?i)"+searchWord) ) ) \
.pluck("id") \
.run(g.rdb_conn))
Построение dict для каждого DocID (ключа) со значением "weight" в качестве значения.Для каждого слова, найденного для DocID, значение «веса» увеличивается на 1.
После завершения итерации все DocID получают тот же «вес», что и количество слов.возвращено, что означает, что они соответствуют всем поисковым словам.Например, со строкой из 3 слов все DocID, получающие 3 как «вес» (в конце), означают, что для них были найдены все слова.
get_all
с DocIDsиспользуется для их извлечения и возврата.
Обратите внимание, что поиск нечувствителен к регистру, в нескольких полях и может использовать частичные слова, как я хотел изначально.Вероятно, не самый лучший и чистый способ, но работает, по крайней мере, на не слишком большой базе данных.