У меня есть коллекция feeds
с такими документами:
{
"created": 1510000000,
"find": [
"title of the document",
"body of the document"
],
"filter": [
"/example.com",
"-en"
]
}
created
содержит метку времени эпохи find
содержит массив фрагментов полнотекстового текста, например, заголовок и тело текста filter
- это массив с дополнительными токенами поиска, такими как хэштеги, домены, локали
Проблема в том, что find
содержит полный текст фрагменты, которые мы хотим маркировать, например, с помощью анализатора text
, но filter
содержит конечные токены, которые мы хотим сравнить в целом, например, с анализатором identity
.
Цель состоит в том, чтобы объединить find
и filter
в один пользовательский анализатор или объединить два анализатора, используя два оператора SEARCH или что-то для этого.
Мне удалось выполнить запрос либо find
, либо filter
успешно, но не удается запросить обоими. Вот как я делаю запрос по filter
:
. Я создал feeds_search
представление:
{
"writebufferIdle": 64,
"type": "arangosearch",
"links": {
"feeds": {
"analyzers": [
"identity"
],
"fields": {
"find": {},
"filter": {},
"created": {}
},
"includeAllFields": false,
"storeValues": "none",
"trackListPositions": false
}
},
"consolidationIntervalMsec": 10000,
"writebufferActive": 0,
"primarySort": [],
"writebufferSizeMax": 33554432,
"consolidationPolicy": {
"type": "tier",
"segmentsBytesFloor": 2097152,
"segmentsBytesMax": 5368709120,
"segmentsMax": 10,
"segmentsMin": 1,
"minScore": 0
},
"cleanupIntervalStep": 2,
"commitIntervalMsec": 1000,
"id": "362444",
"globallyUniqueId": "hD6FBD6EE239C/362444"
}
и создал пример запроса:
FOR feed IN feeds_search
SEARCH ANALYZER(feed.created < 9990000000 AND feed.created > 1500000000
AND (feed.find == "title of the document")
AND (feed.`filter` == "/example.com" OR feed.`filter` == "-uk"), "identity")
SORT feed.created
LIMIT 20
RETURN feed
. Пример запроса работает, потому что find
содержит полный текст (identity
анализатор). Как только я переключаюсь на анализатор text
, токены с одним словом работают на find
, но filter
больше не работает.
Я попытался использовать комбинацию SEARCH и FILTER, что дает мне желаемый результат. результат, но я предполагаю, что он, вероятно, работает хуже, чем анализатор SEARCH. Я вижу, что analyzers
- это массив в синтаксисе представления, но мне кажется, что я не могу установить отдельные поля для каждого анализатора.