Как я могу выполнить WHERE В синтаксическом SQL с помощью Solr 8.7

#mysql #sql #solr

#mysql #sql #solr

Вопрос:

Я хочу преобразовать следующий SQL-запрос в запрос solr

 select 
    Sentences.sentenceid, sentence, languagecode 
from 
    Sentences 
where 
    sentenceid in (select translatedid 
                   from SentencesRelationship 
                   where sentenceid = '3152');
 

Большое вам спасибо!

Комментарии:

1. попробуйте использовать fq в своем запросе

2. Это будет соответствовать тому, что Solr называет соединением: lucene. apache.org/solr/guide/7_2 /…

3. @MatsLindh Не могли бы вы продемонстрировать анализатор запросов Join для моего случая?. Я не совсем понимаю q = {!join from=id to=manu_id_s}compName_s:Belkin

Ответ №1:

Давайте предположим, что у вас есть два ядра SOLR: 1. предложения (sentenceId, предложение, языковой код) 2. sentencesRelationship (sentenceId, translatedId)

Со следующими данными:

предложения:

 sentenceId, sentence, languageCode
1, sentence1, lang1
2, sentence2, lang2
3, sentence3, lang3
 

sentencesRelationship:

 sentenceId, translatedId
1, 101
2, 102
 

Существует несколько решений для создания соединения в SOLR. Можно было бы использовать innerJoin в StreamingExpression:

 innerJoin(
    search(sentences, q="*:*", fl="sentenceId, sentence, languagecode", sort="sentenceId asc", qt="/export"),
    search(sentencesRelationship, q="sentenceId:3152",
               fl="sentenceId, translatedId", sort="sentenceId asc", qt="/export"),
    on="sentenceId"
)