Соответствие идентификатора документа без учета регистра в Couchbase - PullRequest
0 голосов
/ 17 октября 2018

Я использую com.couchbase.client зависимость maven в проекте Java Spring.Я извлекаю документ из базы следующим образом:

JsonDocument document = bucket.get(id); //matches id case sensitively

Но у меня есть новое требование.Я должен получить документы на основе нечувствительного к регистру соответствия id .

Например: допустим, у couchbase есть документ с идентификатором heLLo_Doc

Когда я выполняю bucket.get("hello_doc") Я хочу, чтобы документ с идентификатором heLLo_Doc был возвращен.Если существует несколько документов с одинаковыми строчными идентификаторами (например: Hello_Doc, hEllo_doc и т. Д.), Мне нужно получить все эти документы.

Есть ли какой-либо метод, предоставленный couchbase для этого?

Худший способ сделать это - поискать все возможности, которые я не хочу делать.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Если вы хотите использовать N1QL.Вам необходимо создать функциональный индекс для ключа документа

CREATE INDEX ix1 ON default(LOWER(META().id));
SELECT * FROM default WHERE LOWER(META().id) = "hello_doc";

ИЛИ

SELECT META().id FROM default WHERE LOWER(META().id) = "hello_doc";
The second query gives actual document keys then you can pass this to your existing bucket.get() call too.
0 голосов
/ 17 октября 2018

Нет такой возможности, если вы просто хотите использовать двигатель KV.Но вы все равно можете добавить строчную версию своего идентификатора в ваш документ и выполнить поиск по n1ql с помощью «LOWER» https://docs.couchbase.com/server/5.5/n1ql/n1ql-language-reference/stringfun.html#fn-str-lower.

, если вам нужно принести варианты своего идентификатора, например «HelloDoc», вы такжеМожно использовать полнотекстовый поиск с некоторым уровнем размытости: https://blog.couchbase.com/fuzzy-matching/

...