Я написал сообщение блога Chunked Element Range Indexs и узнал в последнюю минуту, что мои показатели производительности были искажены удивительно большим документом в моем индексе. Когда я удалил этот большой документ, многие другие методы, такие как подстановочный знак, неожиданно стали намного быстрее. Это меня удивило, потому что все другие поисковые системы, которые я использовал, не могли предложить такую быструю производительность и гибкость для сценариев с опережающим сценарием, особенно если я попытался ввести поиск по wild-card. Я решил не публично публиковать свой пост, но кто-то случайно сделал это для меня, поэтому мы решили оставить его там, так как он по-прежнему представляет действительный вариант.
Поскольку MarkLogic предлагает несколько подстановочных индексов, в этой области вы действительно можете многое сделать. Тем не менее, поисковые фрагменты не будут правильным способом сделать это, поскольку я считаю, что они добавили некоторые накладные расходы. Вызовите cts: поиск или один из других вызовов cts для соответствия лексике. Я предполагаю, что вы хотите cts: element-value-match. Это делает подстановочные знаки против индекса диапазона, так как все они в памяти, поэтому быстрее. Включите все ваши подстановочные индексы на свой дБ, если сможете.
Его следует вызывать из пользовательского сценария XQuery на HTTP-сервере MarkLogic. Я не рекомендую расширение REST, как обычно, потому что вам нужно быть как можно более ровным, чтобы выполнить большинство сценариев с приоритетом типа (то есть достаточно быстро).
Я предлагаю вам найти способы уменьшить набор значений в индексе диапазона до менее чем 100 000, чтобы было меньше, чем нужно, и вы не допускаете никаких нежелательных предложений. Кроме того, убедитесь, что вы отфильтровываете набор совпадений на основе остальной части запроса (если пользователь уже начал вводить другие слова или фразы). Убедитесь, что ваш HTTP-скрипт ограничивает количество предложений, возвращенных, поскольку пользователь обычно не может извлечь выгоду из длинного списка предложений. И создайте некоторые алгоритмы, чтобы ранжировать предложения, поэтому самые полезные из них выходят на вершину.Наконец, будьте очень, очень осторожны, чтобы не предлагать предложения, которые более отвлекают, чем полезно. Если вы собираетесь вводить своих пользователей в режим «впереди», это прервет их поиск и тренировку мысли, поэтому не прерывайте их, если вы собираетесь предлагать поисковые фразы, которые не помогут им получить то, что они хотят , Я видел это слишком часто, даже на крупных сайтах. Не делайте ввода вперед, если вы не хотите измерять использование этой функции и настраивать ее со временем или удалять, если это отвлекает пользователей.
Надеюсь, что это поможет!
Вы используете API-интерфейс клиента OOTB или строите свои собственные услуги? Похоже, вы используете Client API ... –
Да, я использую Java API –