Предположим, у меня есть следующие поля в схеме документа:
<field name="id" type="string" indexed="true" stored="true" multiValued="false" />
<field name="type" type="string" indexed="true" stored="true" multiValued="false" />
<field name="referenceDataValues" type="string" indexed="true" stored="true" multiValued="true" />
<field name="text" type="text" indexed="true" stored="false" multiValued="true" />
В документе А есть следующие значения для перечисленных полей:
- id: "все равно"
- тип: "SalesOrder"
- referenceDataValues: ["abcdefg", "hijklmn", "opqrst"]
- текст: ["do", "not", "care", "any"]
Документ B имеет следующие значения:
- id: "not care"
- тип: "SalesOrder"
- referenceDataValues: ["hijklmn", "opqrst"]
- текст: ["red", "paint"]
Документ C имеет следующие значения:
- id: "abcdef"
- тип: "Customer"
- referenceDataValues: (null)
- text: ["hello", "world", "как "," я "," делаю "]
Документ D имеет следующие значения:
- id:" hijklmn "
- тип:" Клиент"
- referenceDataValues: (null)
- text: [" hello "," world "," how "," ya "," working "]
По умолчанию поиск выполняется только в текстовом поле.
Если пользователь вводит запрос «SalesOrder red paint Customer hello world», я хочу создать запрос Solr, который возвращает только Document B. То есть, получите (SalesOrders, чей текст имеет красный ИЛИ paint), кто ссылается на клиентов, чьитекст имеет привет ИЛИ мир
Алгоритм достижения этого будет выглядеть так:
Сначала результаты этого запроса:
q = "привет мир" & fq = type: Customer & fl = id
, который будет представлять собой документы C и D, содержащие только идентификаторы.Однако на самом деле я хочу получить эти значения в каждом из полей идентификатора, а не в документах, чтобы я мог видеть, существуют ли они в полях referenceDataValues в документах SalesOrders.
q ="красная краска" & fq = тип: SalesOrder & fq = referenceDataValues: (вложите здесь значения идентификатора из предыдущего запроса)
Можно ли вернуть значения полей идентификатора в первом запросе?Если да, как будет выглядеть синтаксис для этого вложенного запроса?
Сейчас запрос, который я пытаюсь использовать, выглядит следующим образом:
q=red paint&start=0&rows=25&fq=type:SalesOrder&fq=referenceDataValues:(_query_:"{!lucene fq=type:CustomerPartyMaster&fl=id} hello world")