powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / marklogic(NoSQL) Java API - объединить and и or?
1 сообщений из 1, страница 1 из 1
marklogic(NoSQL) Java API - объединить and и or?
    #39027799
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, может мне кто поможет и подскажет простую вещь? А то нужно немножко переделать, а я только-только начинаю помаленьку "вкуривать" marklogic. Есть две функции одна ищет в документах по нескольким полям с помощью "or", другая ищет документы с помощью "and".
Мне нужно как-то объединить эти функции чтоб поиск работал к примеру вот так..
((elem1 or elem2 or elem3) and(elem1 and elem2 and elem3)) - join.
Вся проблема заключается в недостаточном понимании как работает NoSQL и marklogik Java API.

Вот код из двух функций.
В request записываются слова по которым будет осуществляться поиск. (setWordConstraint or setValueConstraint)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
...........................

public class CombinedSearch {

	public SearchOptions options = null;
	public StructuredQueryDefinition query = null;

...........................

 // create a query builder
    StructuredQueryBuilder qb = new StructuredQueryBuilder();

    // read search definition
List<StructuredQueryDefinition> queries = request.getQueryDefinitionList();

    StructuredQueryDefinition query = null;
    Works works = null;

    if (!CollectionUtils.isEmpty(queries)) {
      query = qb.or(queries.toArray(new StructuredQueryDefinition[0]));
      combinedSearch.setQuery(query);
      works = getDocumentListByCombinedSearch(Works.class, Work.class, combinedSearch);
    }

...........................

 // create a query builder
    StructuredQueryBuilder qb = new StructuredQueryBuilder();

    // read search definition
    List<StructuredQueryDefinition> queries = request.getQueryDefinitionList();

    StructuredQueryDefinition query = null;
    Works works = null;

    if (!CollectionUtils.isEmpty(queries)) {
      query = qb.and(queries.toArray(new StructuredQueryDefinition[0]));
      combinedSearch.setQuery(query);
      works = getDocumentListByCombinedSearch(Works.class, Work.class, combinedSearch);
    }




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
//request.getQueryDefinitionList();
	public List<StructuredQueryDefinition> getQueryDefinitionList() {

		// create a query builder
		StructuredQueryBuilder qb = new StructuredQueryBuilder();

		// build a search definition
		List<StructuredQueryDefinition> queries = new ArrayList<StructuredQueryDefinition>();

		for (SearchRequestConstraint searchConstraint : getSearchConstraintList()) {

			if (searchConstraint.getTypeOfConstraint().equals(VALUE_CONSTRAINT)) {

				queries.add(qb.valueConstraint(searchConstraint.getConstraintName(), searchConstraint.getSearchValue()));

			} else if (searchConstraint.getTypeOfConstraint().equals(WORD_CONSTRAINT)) {

				queries.add(qb.wordConstraint(searchConstraint.getConstraintName(), searchConstraint.getSearchValue()));
			}
		}

		return queries;
	}



Спасибо за подсказки.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / marklogic(NoSQL) Java API - объединить and и or?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]