Highlighting.md.json 362 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. {
  2. "1520675530074c38d189c1cf870a12831b96e0a3353910a1a9a0debdf38d47f4": {
  3. "original": "Most options are the same as in the [HIGHLIGHT() function](../Searching/Highlighting.md). There are, however, several options that can only be used with `CALL SNIPPETS`.\n\n<!-- example CALL SNIPPETS load files -->\nThe following options can be used to highlight text stored in separate files:\n\n#### load_files\nThis option, when enabled, treats the first argument as file names instead of data to extract snippets from. The specified files on the server side will be loaded for data. Up to [max_threads_per_query](../Server_settings/Searchd.md#max_threads_per_query) worker threads per request will be used to parallelize the work when this flag is enabled. Default is 0 (no limit). To distribute snippet generation between remote agents, invoke snippets generation in a distributed table containing only one(!) local agent and several remotes. The [snippets_file_prefix](../Creating_a_table/Creating_a_distributed_table/Remote_tables.md#snippets_file_prefix) option is used to generate the final file name. For example, when searchd is configured with `snippets_file_prefix = /var/data_` and `text.txt` is provided as a file name, snippets will be generated from the content of `/var/data_text.txt`.\n\n#### load_files_scattered\nThis option only works with distributed snippets generation with remote agents. Source files for snippet generation can be distributed among different agents, and the main server will merge all non-erroneous results. For example, if one agent of the distributed table has `file1.txt`, another agent has `file2.txt`, and you use `CALL SNIPPETS` with both of these files, searchd will merge agent results, so you will get results from both `file1.txt` and `file2.txt`. Default is 0.\n\nIf the `load_files` option is also enabled, the request will return an error if any of the files is not available anywhere. Otherwise (if `load_files` is not enabled), it will return empty strings for all absent files. Searchd does not pass this flag to agents, so agents do not generate a critical error if the file does not exist. If you want to be sure that all source files are loaded, set both `load_files_scattered` and `load_files` to 1. If the absence of some source files on some agent is not critical, set only `load_files_scattered` to 1.\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_227\n\n<!-- response SQL -->\nCODE_BLOCK_228\n\n<!-- end -->\n<!-- proofread -->\n\n",
  4. "translations": {
  5. "chinese": "\u5927\u591a\u6570\u9009\u9879\u4e0e[HIGHLIGHT()\u51fd\u6570](../Searching/Highlighting.md)\u4e2d\u7684\u76f8\u540c\u3002\u7136\u800c\uff0c\u6709\u51e0\u4e2a\u9009\u9879\u53ea\u80fd\u4e0e`CALL SNIPPETS`\u4e00\u8d77\u4f7f\u7528\u3002\n\n<!-- example CALL SNIPPETS load files -->\n\u4ee5\u4e0b\u9009\u9879\u53ef\u7528\u4e8e\u7a81\u51fa\u663e\u793a\u5b58\u50a8\u5728\u5355\u72ec\u6587\u4ef6\u4e2d\u7684\u6587\u672c\uff1a\n\n#### load_files\n\u542f\u7528\u6b64\u9009\u9879\u65f6\uff0c\u5c06\u7b2c\u4e00\u4e2a\u53c2\u6570\u89c6\u4e3a\u6587\u4ef6\u540d\uff0c\u800c\u4e0d\u662f\u7528\u4e8e\u63d0\u53d6\u7247\u6bb5\u7684\u6570\u636e\u3002\u670d\u52a1\u5668\u7aef\u6307\u5b9a\u7684\u6587\u4ef6\u5c06\u88ab\u52a0\u8f7d\u4f5c\u4e3a\u6570\u636e\u3002\u5f53\u542f\u7528\u6b64\u6807\u5fd7\u65f6\uff0c\u6bcf\u4e2a\u8bf7\u6c42\u5c06\u4f7f\u7528\u6700\u591a[ max_threads_per_query](../Server_settings/Searchd.md#max_threads_per_query)\u4e2a\u5de5\u4f5c\u7ebf\u7a0b\u6765\u5e76\u884c\u5904\u7406\u5de5\u4f5c\u3002\u9ed8\u8ba4\u503c\u4e3a0\uff08\u65e0\u4e0a\u9650\uff09\u3002\u8981\u5728\u8fdc\u7a0b\u4ee3\u7406\u4e4b\u95f4\u5206\u53d1\u7247\u6bb5\u751f\u6210\uff0c\u8bf7\u5728\u4ec5\u5305\u542b\u4e00\u4e2a\u672c\u5730\u4ee3\u7406\u548c\u82e5\u5e72\u8fdc\u7a0b\u4ee3\u7406\u7684\u5206\u5e03\u5f0f\u8868\u4e2d\u8c03\u7528\u7247\u6bb5\u751f\u6210\u3002[snippets_file_prefix](../Creating_a_table/Creating_a_distributed_table/Remote_tables.md#snippets_file_prefix)\u9009\u9879\u7528\u4e8e\u751f\u6210\u6700\u7ec8\u6587\u4ef6\u540d\u3002\u4f8b\u5982\uff0c\u5f53searchd\u914d\u7f6e\u4e3a`snippets_file_prefix = /var/data_`\u4e14\u63d0\u4f9b`text.txt`\u4f5c\u4e3a\u6587\u4ef6\u540d\u65f6\uff0c\u7247\u6bb5\u5c06\u4ece`/var/data_text.txt`\u7684\u5185\u5bb9\u4e2d\u751f\u6210\u3002\n\n#### load_files_scattered\n\u6b64\u9009\u9879\u4ec5\u9002\u7528\u4e8e\u5e26\u6709\u8fdc\u7a0b\u4ee3\u7406\u7684\u5206\u5e03\u5f0f\u7247\u6bb5\u751f\u6210\u3002\u7247\u6bb5\u751f\u6210\u7684\u6e90\u6587\u4ef6\u53ef\u4ee5\u5206\u5e03\u5728\u4e0d\u540c\u7684\u4ee3\u7406\u4e0a\uff0c\u4e3b\u670d\u52a1\u5668\u5c06\u5408\u5e76\u6240\u6709\u65e0\u9519\u8bef\u7684\u7ed3\u679c\u3002\u4f8b\u5982\uff0c\u5982\u679c\u5206\u5e03\u5f0f\u8868\u7684\u4e00\u4e2a\u4ee3\u7406\u62e5\u6709`file1.txt`\uff0c\u53e6\u4e00\u4e2a\u4ee3\u7406\u62e5\u6709`file2.txt`\uff0c\u5e76\u4e14\u4f60\u4f7f\u7528\u5305\u542b\u8fd9\u4e24\u4e2a\u6587\u4ef6\u7684`CALL SNIPPETS`\uff0csearchd\u5c06\u5408\u5e76\u4ee3\u7406\u7ed3\u679c\uff0c\u56e0\u6b64\u4f60\u5c06\u83b7\u5f97\u6765\u81ea`file1.txt`\u548c`file2.txt`\u7684\u7ed3\u679c\u3002\u9ed8\u8ba4\u503c\u4e3a0\u3002\n\n\u5982\u679c\u540c\u65f6\u542f\u7528\u4e86`load_files`\u9009\u9879\uff0c\u5f53\u4efb\u4f55\u6587\u4ef6\u5728\u4efb\u4f55\u4f4d\u7f6e\u4e0d\u53ef\u7528\u65f6\uff0c\u8bf7\u6c42\u5c06\u8fd4\u56de\u9519\u8bef\u3002\u5426\u5219\uff08\u5982\u679c\u672a\u542f\u7528`load_files`\uff09\uff0c\u6240\u6709\u7f3a\u5931\u6587\u4ef6\u5c06\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\u3002searchd\u4e0d\u4f1a\u5c06\u6b64\u6807\u5fd7\u4f20\u9012\u7ed9\u4ee3\u7406\uff0c\u56e0\u6b64\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u4ee3\u7406\u4e0d\u4f1a\u751f\u6210\u4e25\u91cd\u9519\u8bef\u3002\u5982\u679c\u60a8\u60f3\u786e\u4fdd\u6240\u6709\u6e90\u6587\u4ef6\u90fd\u5df2\u52a0\u8f7d\uff0c\u8bf7\u5c06`load_files_scattered`\u548c`load_files`\u90fd\u8bbe\u7f6e\u4e3a1\u3002\u5982\u679c\u67d0\u4e9b\u4ee3\u7406\u7f3a\u5c11\u90e8\u5206\u6e90\u6587\u4ef6\u4e0d\u91cd\u8981\uff0c\u5219\u53ea\u9700\u5c06`load_files_scattered`\u8bbe\u7f6e\u4e3a1\u3002\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_227\n\n<!-- response SQL -->\nCODE_BLOCK_228\n\n<!-- end -->\n<!-- proofread -->\n\n",
  6. "russian": "\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043e\u043f\u0446\u0438\u0439 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435, \u043a\u0430\u043a \u0432 [\u0444\u0443\u043d\u043a\u0446\u0438\u0438 HIGHLIGHT()](../Searching/Highlighting.md). \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 `CALL SNIPPETS`.\n\n<!-- example CALL SNIPPETS load files -->\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445:\n\n#### load_files\n\u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430 \u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432. \u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0434\u043e [max_threads_per_query](../Server_settings/Searchd.md#max_threads_per_query) \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f). \u0414\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438, \u0432\u044b\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e(!) \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445. \u041e\u043f\u0446\u0438\u044f [snippets_file_prefix](../Creating_a_table/Creating_a_distributed_table/Remote_tables.md#snippets_file_prefix) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 searchd \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441 `snippets_file_prefix = /var/data_`, \u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d `text.txt`, \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 `/var/data_text.txt`.\n\n#### load_files_scattered\n\u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 \u0441 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438, \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0432\u0441\u0435 \u0431\u0435\u0437\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0435\u0441\u0442\u044c `file1.txt`, \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u2014 `file2.txt`, \u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 `CALL SNIPPETS` \u0441 \u043e\u0431\u043e\u0438\u043c\u0438 \u044d\u0442\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, searchd \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u0430\u043a \u0438\u0437 `file1.txt`, \u0442\u0430\u043a \u0438 \u0438\u0437 `file2.txt`. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0.\n\n\u0415\u0441\u043b\u0438 \u043e\u043f\u0446\u0438\u044f `load_files` \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0435\u0440\u043d\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0433\u0434\u0435-\u043b\u0438\u0431\u043e. \u0418\u043d\u0430\u0447\u0435 (\u0435\u0441\u043b\u0438 `load_files` \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430), \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u044b \u043f\u0443\u0441\u0442\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. Searchd \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0430\u0433\u0435\u043d\u0442\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0433\u0435\u043d\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0432\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043e\u0431\u0435 \u043e\u043f\u0446\u0438\u0438 `load_files_scattered` \u0438 `load_files` \u0432 1. \u0415\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u0430\u0445 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e `load_files_scattered` \u0432 1.\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_227\n\n<!-- response SQL -->\nCODE_BLOCK_228\n\n<!-- end -->\n<!-- proofread -->"
  7. },
  8. "is_code_or_comment": false,
  9. "model": "openai:gpt-4.1-mini",
  10. "updated_at": 1766339799
  11. },
  12. "de74e45243ad1256b4275d11e063b3303c2428fa1f0cf72f91bd196fd72dbaa4": {
  13. "original": "<!-- response PHP -->\nCODE_BLOCK_62\n<!-- request Python -->\nCODE_BLOCK_63\n<!-- response Python -->\nCODE_BLOCK_64\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_65\n<!-- response Python-asyncio -->\nCODE_BLOCK_66\n\n<!-- request Javascript -->\nCODE_BLOCK_67\n<!-- response Javascript -->\nCODE_BLOCK_68\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_69\n\n<!-- response Java -->\nCODE_BLOCK_70\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_71\n\n<!-- response C# -->\nCODE_BLOCK_72\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_73\n\n<!-- response Rust -->\nCODE_BLOCK_74\n\n<!-- request TypeScript -->\nCODE_BLOCK_75\n<!-- response TypeScript -->\nCODE_BLOCK_76\n\n<!-- request Go -->\nCODE_BLOCK_77\n<!-- response Go -->\nCODE_BLOCK_78\n\n<!-- end -->\n\n<!-- example highlight JSON all field -->\n\nTo highlight all possible fields, pass an empty object as the `highlight` property.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_79\n\n<!-- response JSON -->\n\nCODE_BLOCK_80\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_81\n\n<!-- response PHP -->\nCODE_BLOCK_82\n<!-- request Python -->\nCODE_BLOCK_83\n<!-- response Python -->\nCODE_BLOCK_84\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_85\n<!-- response Python-asyncio -->\nCODE_BLOCK_86\n\n<!-- request Javascript -->\nCODE_BLOCK_87\n<!-- response Javascript -->\nCODE_BLOCK_88\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_89\n\n<!-- response Java -->\nCODE_BLOCK_90\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_91\n\n<!-- response C# -->\nCODE_BLOCK_92\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_93\n\n<!-- response Rust -->\nCODE_BLOCK_94\n\n<!-- request TypeScript -->\nCODE_BLOCK_95\n<!-- response TypeScript -->\nCODE_BLOCK_96\n\n<!-- request Go -->\nCODE_BLOCK_97\n<!-- response Go -->\nCODE_BLOCK_98\n\n\n<!-- end -->\n\nIn addition to common highlighting options, several synonyms are available for JSON queries via HTTP:\n\n#### fields\nThe `fields` object contains attribute names with options. It can also be an array of field names (without any options).\n\nNote that by default, highlighting attempts to highlight the results following the full-text query. In a general case, when you don't specify fields to highlight, the highlight is based on your full-text query. However, if you specify fields to highlight, it highlights only if the full-text query matches the selected fields.\n\n#### encoder\nThe `encoder` can be set to `default` or `html`. When set to `html`, it retains HTML markup when highlighting. This works similarly to the `html_strip_mode=retain` option.\n\n<!-- example highlight_query -->\n#### highlight_query\nThe `highlight_query` option allows you to highlight against a query other than your search query. The syntax is the same as in the main `query`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_99\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_100\n\n<!-- request Python -->\nCODE_BLOCK_101\n<!-- response Python -->\nCODE_BLOCK_102\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_103\n<!-- response Python-asyncio -->\nCODE_BLOCK_104\n\n<!-- request Javascript -->\nCODE_BLOCK_105\n<!-- response Javascript -->\nCODE_BLOCK_106\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_107\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_108\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_109\n\n<!-- request TypeScript -->\nCODE_BLOCK_110\n<!-- response TypeScript -->\nCODE_BLOCK_111\n\n<!-- request Go -->\nCODE_BLOCK_112\n<!-- response Go -->\nCODE_BLOCK_113\n\n<!-- end -->\n\n<!-- example pre_tags -->\n\n#### pre_tags and post_tags\n`pre_tags` and `post_tags` set the opening and closing tags for highlighted text snippets. They function similarly to the `before_match` and `after_match` options. These are optional, with default values of `<b>` and `</b>`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_114\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_115\n<!-- response PHP -->\nCODE_BLOCK_116\n<!-- request Python -->\nCODE_BLOCK_117\n<!-- response Python -->\nCODE_BLOCK_118\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_119\n<!-- response Python-asyncio -->\nCODE_BLOCK_120\n\n<!-- request Javascript -->\nCODE_BLOCK_121\n<!-- response Javascript -->\nCODE_BLOCK_122\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_123\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_124\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_125\n\n<!-- request TypeScript -->\nCODE_BLOCK_126\n<!-- response TypeScript -->\nCODE_BLOCK_127\n\n<!-- request Go -->\nCODE_BLOCK_128\n<!-- response Go -->\nCODE_BLOCK_129\n\n<!-- end -->\n\n<!-- example no_match_size -->\n#### no_match_size\n`no_match_size` functions similarly to the `allow_empty` option. If set to 0, it acts as `allow_empty=1`, allowing an empty string to be returned as a highlighting result when a snippet could not be generated. Otherwise, the beginning of the field will be returned. This is optional, with a default value of 1.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_130\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_131\n<!-- response PHP -->\nCODE_BLOCK_132\n<!-- request Python -->\nCODE_BLOCK_133\n<!-- response Python -->\nCODE_BLOCK_134\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_135\n<!-- response Python-asyncio -->\nCODE_BLOCK_136\n\n<!-- request Javascript -->\nCODE_BLOCK_137\n<!-- response Javascript -->\nCODE_BLOCK_138\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_139\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_140\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_141\n\n<!-- request TypeScript -->\nCODE_BLOCK_142\n<!-- response TypeScript -->\nCODE_BLOCK_143\n\n<!-- request Go -->\nCODE_BLOCK_144\n<!-- response Go -->\nCODE_BLOCK_145\n\n<!-- end -->\n\n<!-- example order -->\n#### order\n`order` sets the sorting order of extracted snippets. If set to `\"score\"`, it sorts the extracted snippets in order of relevance. This is optional and works similarly to the `weight_order` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_146\n\n<!-- request PHP -->",
  14. "translations": {
  15. "chinese": "<!-- response PHP -->\nCODE_BLOCK_62\n<!-- request Python -->\nCODE_BLOCK_63\n<!-- response Python -->\nCODE_BLOCK_64\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_65\n<!-- response Python-asyncio -->\nCODE_BLOCK_66\n\n<!-- request Javascript -->\nCODE_BLOCK_67\n<!-- response Javascript -->\nCODE_BLOCK_68\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_69\n\n<!-- response Java -->\nCODE_BLOCK_70\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_71\n\n<!-- response C# -->\nCODE_BLOCK_72\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_73\n\n<!-- response Rust -->\nCODE_BLOCK_74\n\n<!-- request TypeScript -->\nCODE_BLOCK_75\n<!-- response TypeScript -->\nCODE_BLOCK_76\n\n<!-- request Go -->\nCODE_BLOCK_77\n<!-- response Go -->\nCODE_BLOCK_78\n\n<!-- end -->\n\n<!-- example highlight JSON all field -->\n\n\u8981\u7a81\u51fa\u663e\u793a\u6240\u6709\u53ef\u80fd\u7684\u5b57\u6bb5\uff0c\u8bf7\u4f20\u9012\u4e00\u4e2a\u7a7a\u5bf9\u8c61\u4f5c\u4e3a `highlight` \u5c5e\u6027\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_79\n\n<!-- response JSON -->\n\nCODE_BLOCK_80\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_81\n\n<!-- response PHP -->\nCODE_BLOCK_82\n<!-- request Python -->\nCODE_BLOCK_83\n<!-- response Python -->\nCODE_BLOCK_84\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_85\n<!-- response Python-asyncio -->\nCODE_BLOCK_86\n\n<!-- request Javascript -->\nCODE_BLOCK_87\n<!-- response Javascript -->\nCODE_BLOCK_88\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_89\n\n<!-- response Java -->\nCODE_BLOCK_90\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_91\n\n<!-- response C# -->\nCODE_BLOCK_92\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_93\n\n<!-- response Rust -->\nCODE_BLOCK_94\n\n<!-- request TypeScript -->\nCODE_BLOCK_95\n<!-- response TypeScript -->\nCODE_BLOCK_96\n\n<!-- request Go -->\nCODE_BLOCK_97\n<!-- response Go -->\nCODE_BLOCK_98\n\n\n<!-- end -->\n\n\u9664\u4e86\u5e38\u89c1\u7684\u7a81\u51fa\u663e\u793a\u9009\u9879\u5916\uff0c\u901a\u8fc7 HTTP \u8fd8\u6709\u51e0\u4e2a JSON \u67e5\u8be2\u7684\u540c\u4e49\u8bcd\u53ef\u7528\uff1a\n\n#### fields\n`fields` \u5bf9\u8c61\u5305\u542b\u5e26\u6709\u9009\u9879\u7684\u5c5e\u6027\u540d\u3002\u5b83\u4e5f\u53ef\u4ee5\u662f\u5b57\u6bb5\u540d\u6570\u7ec4\uff08\u4e0d\u5305\u542b\u4efb\u4f55\u9009\u9879\uff09\u3002\n\n\u8bf7\u6ce8\u610f\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u7a81\u51fa\u663e\u793a\u5c1d\u8bd5\u7a81\u51fa\u663e\u793a\u8ddf\u968f\u5168\u6587\u67e5\u8be2\u7684\u7ed3\u679c\u3002\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u5982\u679c\u4f60\u4e0d\u6307\u5b9a\u8981\u7a81\u51fa\u663e\u793a\u7684\u5b57\u6bb5\uff0c\u7a81\u51fa\u663e\u793a\u662f\u57fa\u4e8e\u4f60\u7684\u5168\u6587\u67e5\u8be2\u7684\u3002\u4f46\u662f\uff0c\u5982\u679c\u4f60\u6307\u5b9a\u4e86\u8981\u7a81\u51fa\u663e\u793a\u7684\u5b57\u6bb5\uff0c\u53ea\u6709\u5f53\u5168\u6587\u67e5\u8be2\u5339\u914d\u9009\u5b9a\u5b57\u6bb5\u65f6\u624d\u4f1a\u8fdb\u884c\u9ad8\u4eae\u3002\n\n#### encoder\n`encoder` \u53ef\u4ee5\u8bbe\u7f6e\u4e3a `default` \u6216 `html`\u3002\u8bbe\u7f6e\u4e3a `html` \u65f6\uff0c\u9ad8\u4eae\u65f6\u4f1a\u4fdd\u7559 HTML \u6807\u8bb0\u3002\u8fd9\u7c7b\u4f3c\u4e8e `html_strip_mode=retain` \u9009\u9879\u3002\n\n<!-- example highlight_query -->\n#### highlight_query\n`highlight_query` \u9009\u9879\u5141\u8bb8\u4f60\u9488\u5bf9\u975e\u641c\u7d22\u67e5\u8be2\u7684\u53e6\u4e00\u4e2a\u67e5\u8be2\u8fdb\u884c\u9ad8\u4eae\u3002\u8bed\u6cd5\u4e0e\u4e3b `query` \u76f8\u540c\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_99\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_100\n\n<!-- request Python -->\nCODE_BLOCK_101\n<!-- response Python -->\nCODE_BLOCK_102\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_103\n<!-- response Python-asyncio -->\nCODE_BLOCK_104\n\n<!-- request Javascript -->\nCODE_BLOCK_105\n<!-- response Javascript -->\nCODE_BLOCK_106\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_107\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_108\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_109\n\n<!-- request TypeScript -->\nCODE_BLOCK_110\n<!-- response TypeScript -->\nCODE_BLOCK_111\n\n<!-- request Go -->\nCODE_BLOCK_112\n<!-- response Go -->\nCODE_BLOCK_113\n\n<!-- end -->\n\n<!-- example pre_tags -->\n\n#### pre_tags \u548c post_tags\n`pre_tags` \u548c `post_tags` \u8bbe\u7f6e\u9ad8\u4eae\u6587\u672c\u7247\u6bb5\u7684\u8d77\u59cb\u548c\u7ed3\u675f\u6807\u7b7e\u3002\u5b83\u4eec\u7684\u529f\u80fd\u7c7b\u4f3c\u4e8e `before_match` \u548c `after_match` \u9009\u9879\u3002\u8fd9\u4e9b\u662f\u53ef\u9009\u7684\uff0c\u9ed8\u8ba4\u503c\u5206\u522b\u662f `<b>` \u548c `</b>`\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_114\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_115\n<!-- response PHP -->\nCODE_BLOCK_116\n<!-- request Python -->\nCODE_BLOCK_117\n<!-- response Python -->\nCODE_BLOCK_118\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_119\n<!-- response Python-asyncio -->\nCODE_BLOCK_120\n\n<!-- request Javascript -->\nCODE_BLOCK_121\n<!-- response Javascript -->\nCODE_BLOCK_122\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_123\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_124\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_125\n\n<!-- request TypeScript -->\nCODE_BLOCK_126\n<!-- response TypeScript -->\nCODE_BLOCK_127\n\n<!-- request Go -->\nCODE_BLOCK_128\n<!-- response Go -->\nCODE_BLOCK_129\n\n<!-- end -->\n\n<!-- example no_match_size -->\n#### no_match_size\n`no_match_size` \u7684\u529f\u80fd\u7c7b\u4f3c\u4e8e `allow_empty` \u9009\u9879\u3002\u5982\u679c\u8bbe\u7f6e\u4e3a 0\uff0c\u5219\u4f5c\u7528\u76f8\u5f53\u4e8e `allow_empty=1`\uff0c\u5141\u8bb8\u5f53\u65e0\u6cd5\u751f\u6210\u7247\u6bb5\u65f6\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\u4f5c\u4e3a\u9ad8\u4eae\u7ed3\u679c\u3002\u5426\u5219\uff0c\u5c06\u8fd4\u56de\u5b57\u6bb5\u7684\u5f00\u5934\u3002\u8fd9\u662f\u53ef\u9009\u7684\uff0c\u9ed8\u8ba4\u503c\u4e3a 1\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_130\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_131\n<!-- response PHP -->\nCODE_BLOCK_132\n<!-- request Python -->\nCODE_BLOCK_133\n<!-- response Python -->\nCODE_BLOCK_134\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_135\n<!-- response Python-asyncio -->\nCODE_BLOCK_136\n\n<!-- request Javascript -->\nCODE_BLOCK_137\n<!-- response Javascript -->\nCODE_BLOCK_138\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_139\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_140\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_141\n\n<!-- request TypeScript -->\nCODE_BLOCK_142\n<!-- response TypeScript -->\nCODE_BLOCK_143\n\n<!-- request Go -->\nCODE_BLOCK_144\n<!-- response Go -->\nCODE_BLOCK_145\n\n<!-- end -->\n\n<!-- example order -->\n#### order\n`order` \u8bbe\u7f6e\u63d0\u53d6\u7247\u6bb5\u7684\u6392\u5e8f\u65b9\u5f0f\u3002\u5982\u679c\u8bbe\u7f6e\u4e3a `\"score\"`\uff0c\u5219\u6309\u7167\u76f8\u5173\u6027\u5bf9\u63d0\u53d6\u7247\u6bb5\u8fdb\u884c\u6392\u5e8f\u3002\u8fd9\u662f\u53ef\u9009\u7684\uff0c\u529f\u80fd\u7c7b\u4f3c\u4e8e `weight_order` \u9009\u9879\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_146\n\n<!-- request PHP -->",
  16. "russian": "<!-- response PHP -->\nCODE_BLOCK_62\n<!-- request Python -->\nCODE_BLOCK_63\n<!-- response Python -->\nCODE_BLOCK_64\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_65\n<!-- response Python-asyncio -->\nCODE_BLOCK_66\n\n<!-- request Javascript -->\nCODE_BLOCK_67\n<!-- response Javascript -->\nCODE_BLOCK_68\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_69\n\n<!-- response Java -->\nCODE_BLOCK_70\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_71\n\n<!-- response C# -->\nCODE_BLOCK_72\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_73\n\n<!-- response Rust -->\nCODE_BLOCK_74\n\n<!-- request TypeScript -->\nCODE_BLOCK_75\n<!-- response TypeScript -->\nCODE_BLOCK_76\n\n<!-- request Go -->\nCODE_BLOCK_77\n<!-- response Go -->\nCODE_BLOCK_78\n\n<!-- end -->\n\n<!-- example highlight JSON all field -->\n\n\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 `highlight`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_79\n\n<!-- response JSON -->\n\nCODE_BLOCK_80\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_81\n\n<!-- response PHP -->\nCODE_BLOCK_82\n<!-- request Python -->\nCODE_BLOCK_83\n<!-- response Python -->\nCODE_BLOCK_84\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_85\n<!-- response Python-asyncio -->\nCODE_BLOCK_86\n\n<!-- request Javascript -->\nCODE_BLOCK_87\n<!-- response Javascript -->\nCODE_BLOCK_88\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_89\n\n<!-- response Java -->\nCODE_BLOCK_90\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_91\n\n<!-- response C# -->\nCODE_BLOCK_92\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_93\n\n<!-- response Rust -->\nCODE_BLOCK_94\n\n<!-- request TypeScript -->\nCODE_BLOCK_95\n<!-- response TypeScript -->\nCODE_BLOCK_96\n\n<!-- request Go -->\nCODE_BLOCK_97\n<!-- response Go -->\nCODE_BLOCK_98\n\n\n<!-- end -->\n\n\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043e\u0431\u0449\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u0434\u043b\u044f JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 HTTP \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u043e\u043d\u0438\u043c\u043e\u0432:\n\n#### fields\n\u041e\u0431\u044a\u0435\u043a\u0442 `fields` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043c\u0435\u043d\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441 \u043e\u043f\u0446\u0438\u044f\u043c\u0438. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0438\u043c\u0451\u043d \u043f\u043e\u043b\u0435\u0439 (\u0431\u0435\u0437 \u043e\u043f\u0446\u0438\u0439).\n\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443. \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0441\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0445 \u043f\u043e\u043b\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443.\n\n#### encoder\n`encoder` \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `default` \u0438\u043b\u0438 `html`. \u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432 `html` \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0435. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `html_strip_mode=retain`.\n\n<!-- example highlight_query -->\n#### highlight_query\n\u041e\u043f\u0446\u0438\u044f `highlight_query` \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c `query`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_99\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_100\n\n<!-- request Python -->\nCODE_BLOCK_101\n<!-- response Python -->\nCODE_BLOCK_102\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_103\n<!-- response Python-asyncio -->\nCODE_BLOCK_104\n\n<!-- request Javascript -->\nCODE_BLOCK_105\n<!-- response Javascript -->\nCODE_BLOCK_106\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_107\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_108\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_109\n\n<!-- request TypeScript -->\nCODE_BLOCK_110\n<!-- response TypeScript -->\nCODE_BLOCK_111\n\n<!-- request Go -->\nCODE_BLOCK_112\n<!-- response Go -->\nCODE_BLOCK_113\n\n<!-- end -->\n\n<!-- example pre_tags -->\n\n#### pre_tags and post_tags\n\u041e\u043f\u0446\u0438\u0438 `pre_tags` \u0438 `post_tags` \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u0433\u0438 \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430. \u041e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u044f\u043c `before_match` \u0438 `after_match`. \u042f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f `<b>` \u0438 `</b>`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_114\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_115\n<!-- response PHP -->\nCODE_BLOCK_116\n<!-- request Python -->\nCODE_BLOCK_117\n<!-- response Python -->\nCODE_BLOCK_118\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_119\n<!-- response Python-asyncio -->\nCODE_BLOCK_120\n\n<!-- request Javascript -->\nCODE_BLOCK_121\n<!-- response Javascript -->\nCODE_BLOCK_122\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_123\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_124\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_125\n\n<!-- request TypeScript -->\nCODE_BLOCK_126\n<!-- response TypeScript -->\nCODE_BLOCK_127\n\n<!-- request Go -->\nCODE_BLOCK_128\n<!-- response Go -->\nCODE_BLOCK_129\n\n<!-- end -->\n\n<!-- example no_match_size -->\n#### no_match_size\n`no_match_size` \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `allow_empty`. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 0, \u044d\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e `allow_empty=1`, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u0435\u0441\u043b\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u043b\u044f. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u043d\u043e 1.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_130\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_131\n<!-- response PHP -->\nCODE_BLOCK_132\n<!-- request Python -->\nCODE_BLOCK_133\n<!-- response Python -->\nCODE_BLOCK_134\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_135\n<!-- response Python-asyncio -->\nCODE_BLOCK_136\n\n<!-- request Javascript -->\nCODE_BLOCK_137\n<!-- response Javascript -->\nCODE_BLOCK_138\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_139\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_140\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_141\n\n<!-- request TypeScript -->\nCODE_BLOCK_142\n<!-- response TypeScript -->\nCODE_BLOCK_143\n\n<!-- request Go -->\nCODE_BLOCK_144\n<!-- response Go -->\nCODE_BLOCK_145\n\n<!-- end -->\n\n<!-- example order -->\n#### order\n\u041e\u043f\u0446\u0438\u044f `order` \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 `\"score\"`, \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `weight_order`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_146\n\n<!-- request PHP -->"
  17. },
  18. "is_code_or_comment": false,
  19. "model": "openai:gpt-4.1-mini",
  20. "updated_at": 1766339810
  21. },
  22. "50319ed3d8117ba4e7790e1afb8ee6454d146f927289bc3375a0a6b810e3ee3f": {
  23. "original": "CODE_BLOCK_147\n<!-- response PHP -->\nCODE_BLOCK_148\n<!-- request Python -->\nCODE_BLOCK_149\n<!-- response Python -->\nCODE_BLOCK_150\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_151\n<!-- response Python-asyncio -->\nCODE_BLOCK_152\n\n<!-- request Javascript -->\nCODE_BLOCK_153\n<!-- response Javascript -->\nCODE_BLOCK_154\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_155\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_156\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_157\n\n<!-- request TypeScript -->\nCODE_BLOCK_158\n<!-- response TypeScript -->\nCODE_BLOCK_159\n\n<!-- request Go -->\nCODE_BLOCK_160\n<!-- response Go -->\nCODE_BLOCK_161\n\n\n<!-- end -->\n\n<!-- example fragment_size -->\n#### fragment_size\n`fragment_size` sets the maximum snippet size in symbols. It can be global or per-field. Per-field options override global options. This is optional, with a default value of 256. It works similarly to the `limit` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_162\n<!-- request PHP -->\n\nCODE_BLOCK_163\n<!-- response PHP -->\nCODE_BLOCK_164\n<!-- request Python -->\nCODE_BLOCK_165\n<!-- response Python -->\nCODE_BLOCK_166\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_167\n<!-- response Python-asyncio -->\nCODE_BLOCK_168\n\n<!-- request Javascript -->\nCODE_BLOCK_169\n<!-- response Javascript -->\nCODE_BLOCK_170\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_171\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_172\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_173\n\n<!-- request TypeScript -->\nCODE_BLOCK_174\n<!-- response TypeScript -->\nCODE_BLOCK_175\n\n<!-- request Go -->\nCODE_BLOCK_176\n<!-- response Go -->\nCODE_BLOCK_177\n\n<!-- end -->\n\n<!-- example number_of_fragments -->\n#### number_of_fragments\n`number_of_fragments` limits the maximum number of snippets in the result. Like `fragment_size`, it can be global or per-field. This is optional, with a default value of 0 (no limit). It works similarly to the `limit_snippets` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_178\n<!-- request PHP -->\n\nCODE_BLOCK_179\n<!-- response PHP -->\nCODE_BLOCK_180\n\n<!-- request Python -->\nCODE_BLOCK_181\n<!-- response Python -->\nCODE_BLOCK_182\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_183\n<!-- response Python-asyncio -->\nCODE_BLOCK_184\n\n<!-- request Javascript -->\nCODE_BLOCK_185\n<!-- response Javascript -->\nCODE_BLOCK_186\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_187\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_188\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_189\n\n<!-- request TypeScript -->\nCODE_BLOCK_190\n<!-- response TypeScript -->\nCODE_BLOCK_191\n\n<!-- request Go -->\nCODE_BLOCK_192\n<!-- response Go -->\nCODE_BLOCK_193\n\n<!-- end -->\n\n<!-- example highlight json per-field limits -->\n\n#### limit, limit_words, limit_snippets\nOptions like `limit`, `limit_words`, and `limit_snippets` can be set as global or per-field options. Global options are used as per-field limits unless per-field options override them. In the example, the `title` field is highlighted with default limit settings, while the `content` field uses a different limit.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_194\n<!-- request PHP -->\n\nCODE_BLOCK_195\n<!-- response PHP -->\nCODE_BLOCK_196\n<!-- request Python -->\nCODE_BLOCK_197\n<!-- response Python -->\nCODE_BLOCK_198\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_199\n<!-- response Python-asyncio -->\nCODE_BLOCK_200\n\n<!-- request Javascript -->\nCODE_BLOCK_201\n<!-- response Javascript -->\nCODE_BLOCK_202\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_203\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_204\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_205\n\n<!-- request TypeScript -->\nCODE_BLOCK_206\n<!-- response TypeScript -->\nCODE_BLOCK_207\n\n<!-- request Go -->\nCODE_BLOCK_208\n<!-- response Go -->\nCODE_BLOCK_209\n\n<!-- end -->\n\n<!-- example highlight json global limits -->\n\n#### limits_per_field\nGlobal limits can also be enforced by specifying `limits_per_field=0`. Setting this option means that all combined highlighting results must be within the specified limits. The downside is that you may get several snippets highlighted in one field and none in another if the highlighting engine decides that they are more relevant.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_210\n<!-- request PHP -->\n\nCODE_BLOCK_211\n<!-- response PHP -->\nCODE_BLOCK_212\n<!-- request Python -->\nCODE_BLOCK_213\n<!-- response Python -->\nCODE_BLOCK_214\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_215\n<!-- response Python-asyncio -->\nCODE_BLOCK_216\n\n<!-- request Javascript -->\nCODE_BLOCK_217\n<!-- response Javascript -->\nCODE_BLOCK_218\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_219\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_220\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_221\n\n<!-- request TypeScript -->\nCODE_BLOCK_222\n\n<!-- request Go -->\nCODE_BLOCK_223\n<!-- end -->\n\n## CALL SNIPPETS\n\n<!-- example CALL SNIPPETS -->\n\nThe `CALL SNIPPETS` statement builds a snippet from provided data and query using specified table settings. It can't access built-in document storage, which is why it's recommended to use the [HIGHLIGHT() function](../Searching/Highlighting.md) instead.\n\nThe syntax is:\n\nCODE_BLOCK_224\n\n#### data\n`data` serves as the source from which a snippet is extracted. It can either be a single string or a list of strings enclosed in curly brackets.\n#### table\n`table` refers to the name of the table that provides the text processing settings for snippet generation.\n#### query\n`query` is the full-text query used to build the snippets.\n#### opt_value and opt_name\n`opt_value` and `opt_name` represent the [snippet generation options](../Searching/Highlighting.md).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_225\n<!-- response SQL -->\nCODE_BLOCK_226\n\n<!-- end -->",
  24. "translations": {
  25. "chinese": "CODE_BLOCK_147\n<!-- response PHP -->\nCODE_BLOCK_148\n<!-- request Python -->\nCODE_BLOCK_149\n<!-- response Python -->\nCODE_BLOCK_150\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_151\n<!-- response Python-asyncio -->\nCODE_BLOCK_152\n\n<!-- request Javascript -->\nCODE_BLOCK_153\n<!-- response Javascript -->\nCODE_BLOCK_154\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_155\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_156\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_157\n\n<!-- request TypeScript -->\nCODE_BLOCK_158\n<!-- response TypeScript -->\nCODE_BLOCK_159\n\n<!-- request Go -->\nCODE_BLOCK_160\n<!-- response Go -->\nCODE_BLOCK_161\n\n\n<!-- end -->\n\n<!-- example fragment_size -->\n#### fragment_size\n`fragment_size` \u8bbe\u7f6e\u7247\u6bb5\u7684\u6700\u5927\u7b26\u53f7\u6570\u3002\u5b83\u53ef\u4ee5\u662f\u5168\u5c40\u8bbe\u7f6e\uff0c\u4e5f\u53ef\u4ee5\u662f\u6bcf\u5b57\u6bb5\u8bbe\u7f6e\u3002\u6bcf\u5b57\u6bb5\u8bbe\u7f6e\u4f1a\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e\u3002\u6b64\u9879\u53ef\u9009\uff0c\u9ed8\u8ba4\u503c\u4e3a256\u3002\u5176\u4f5c\u7528\u7c7b\u4f3c\u4e8e `limit` \u9009\u9879\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_162\n<!-- request PHP -->\n\nCODE_BLOCK_163\n<!-- response PHP -->\nCODE_BLOCK_164\n<!-- request Python -->\nCODE_BLOCK_165\n<!-- response Python -->\nCODE_BLOCK_166\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_167\n<!-- response Python-asyncio -->\nCODE_BLOCK_168\n\n<!-- request Javascript -->\nCODE_BLOCK_169\n<!-- response Javascript -->\nCODE_BLOCK_170\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_171\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_172\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_173\n\n<!-- request TypeScript -->\nCODE_BLOCK_174\n<!-- response TypeScript -->\nCODE_BLOCK_175\n\n<!-- request Go -->\nCODE_BLOCK_176\n<!-- response Go -->\nCODE_BLOCK_177\n\n<!-- end -->\n\n<!-- example number_of_fragments -->\n#### number_of_fragments\n`number_of_fragments` \u9650\u5236\u7ed3\u679c\u4e2d\u7247\u6bb5\u7684\u6700\u5927\u6570\u91cf\u3002\u4e0e `fragment_size` \u7c7b\u4f3c\uff0c\u5b83\u53ef\u4ee5\u662f\u5168\u5c40\u8bbe\u7f6e\u6216\u6bcf\u5b57\u6bb5\u8bbe\u7f6e\u3002\u6b64\u9879\u53ef\u9009\uff0c\u9ed8\u8ba4\u503c\u4e3a0\uff08\u65e0\u9650\u5236\uff09\u3002\u5b83\u7684\u4f5c\u7528\u7c7b\u4f3c\u4e8e `limit_snippets` \u9009\u9879\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_178\n<!-- request PHP -->\n\nCODE_BLOCK_179\n<!-- response PHP -->\nCODE_BLOCK_180\n\n<!-- request Python -->\nCODE_BLOCK_181\n<!-- response Python -->\nCODE_BLOCK_182\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_183\n<!-- response Python-asyncio -->\nCODE_BLOCK_184\n\n<!-- request Javascript -->\nCODE_BLOCK_185\n<!-- response Javascript -->\nCODE_BLOCK_186\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_187\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_188\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_189\n\n<!-- request TypeScript -->\nCODE_BLOCK_190\n<!-- response TypeScript -->\nCODE_BLOCK_191\n\n<!-- request Go -->\nCODE_BLOCK_192\n<!-- response Go -->\nCODE_BLOCK_193\n\n<!-- end -->\n\n<!-- example highlight json per-field limits -->\n\n#### limit, limit_words, limit_snippets\n\u9009\u9879\u5982 `limit`\u3001`limit_words` \u548c `limit_snippets` \u53ef\u4ee5\u8bbe\u7f6e\u4e3a\u5168\u5c40\u6216\u6bcf\u5b57\u6bb5\u9009\u9879\u3002\u5168\u5c40\u9009\u9879\u7528\u4f5c\u6bcf\u5b57\u6bb5\u7684\u9650\u5236\uff0c\u9664\u975e\u88ab\u6bcf\u5b57\u6bb5\u9009\u9879\u8986\u76d6\u3002\u5728\u793a\u4f8b\u4e2d\uff0c`title` \u5b57\u6bb5\u4ee5\u9ed8\u8ba4\u9650\u5236\u8bbe\u7f6e\u8fdb\u884c\u9ad8\u4eae\uff0c\u800c `content` \u5b57\u6bb5\u4f7f\u7528\u4e0d\u540c\u7684\u9650\u5236\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_194\n<!-- request PHP -->\n\nCODE_BLOCK_195\n<!-- response PHP -->\nCODE_BLOCK_196\n<!-- request Python -->\nCODE_BLOCK_197\n<!-- response Python -->\nCODE_BLOCK_198\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_199\n<!-- response Python-asyncio -->\nCODE_BLOCK_200\n\n<!-- request Javascript -->\nCODE_BLOCK_201\n<!-- response Javascript -->\nCODE_BLOCK_202\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_203\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_204\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_205\n\n<!-- request TypeScript -->\nCODE_BLOCK_206\n<!-- response TypeScript -->\nCODE_BLOCK_207\n\n<!-- request Go -->\nCODE_BLOCK_208\n<!-- response Go -->\nCODE_BLOCK_209\n\n<!-- end -->\n\n<!-- example highlight json global limits -->\n\n#### limits_per_field\n\u901a\u8fc7\u6307\u5b9a `limits_per_field=0` \u4e5f\u53ef\u4ee5\u5f3a\u5236\u6267\u884c\u5168\u5c40\u9650\u5236\u3002\u8bbe\u7f6e\u6b64\u9009\u9879\u610f\u5473\u7740\u6240\u6709\u5408\u5e76\u7684\u9ad8\u4eae\u7ed3\u679c\u5fc5\u987b\u5728\u6307\u5b9a\u9650\u5236\u5185\u3002\u7f3a\u70b9\u662f\uff0c\u5982\u679c\u9ad8\u4eae\u5f15\u64ce\u8ba4\u4e3a\u67d0\u4e9b\u7247\u6bb5\u66f4\u76f8\u5173\uff0c\u53ef\u80fd\u4f1a\u5728\u4e00\u4e2a\u5b57\u6bb5\u4e2d\u9ad8\u4eae\u591a\u4e2a\u7247\u6bb5\uff0c\u800c\u53e6\u4e00\u4e2a\u5b57\u6bb5\u4e2d\u6ca1\u6709\u4efb\u4f55\u7247\u6bb5\u3002\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_210\n<!-- request PHP -->\n\nCODE_BLOCK_211\n<!-- response PHP -->\nCODE_BLOCK_212\n<!-- request Python -->\nCODE_BLOCK_213\n<!-- response Python -->\nCODE_BLOCK_214\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_215\n<!-- response Python-asyncio -->\nCODE_BLOCK_216\n\n<!-- request Javascript -->\nCODE_BLOCK_217\n<!-- response Javascript -->\nCODE_BLOCK_218\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_219\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_220\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_221\n\n<!-- request TypeScript -->\nCODE_BLOCK_222\n\n<!-- request Go -->\nCODE_BLOCK_223\n<!-- end -->\n\n## CALL SNIPPETS\n\n<!-- example CALL SNIPPETS -->\n\n`CALL SNIPPETS` \u8bed\u53e5\u57fa\u4e8e\u63d0\u4f9b\u7684\u6570\u636e\u548c\u67e5\u8be2\uff0c\u4f7f\u7528\u6307\u5b9a\u7684\u8868\u8bbe\u7f6e\u751f\u6210\u7247\u6bb5\u3002\u5b83\u65e0\u6cd5\u8bbf\u95ee\u5185\u7f6e\u6587\u6863\u5b58\u50a8\uff0c\u56e0\u6b64\u63a8\u8350\u4f7f\u7528 [HIGHLIGHT() \u51fd\u6570](../Searching/Highlighting.md)\u3002\n\n\u8bed\u6cd5\u4e3a\uff1a\n\nCODE_BLOCK_224\n\n#### data\n`data` \u4f5c\u4e3a\u751f\u6210\u7247\u6bb5\u7684\u6e90\u6570\u636e\u3002\u5b83\u53ef\u4ee5\u662f\u5355\u4e2a\u5b57\u7b26\u4e32\uff0c\u4e5f\u53ef\u4ee5\u662f\u7528\u5927\u62ec\u53f7\u62ec\u8d77\u7684\u5b57\u7b26\u4e32\u5217\u8868\u3002\n#### table\n`table` \u662f\u63d0\u4f9b\u6587\u672c\u5904\u7406\u8bbe\u7f6e\u4ee5\u751f\u6210\u7247\u6bb5\u7684\u8868\u540d\u3002\n#### query\n`query` \u662f\u7528\u4e8e\u751f\u6210\u7247\u6bb5\u7684\u5168\u6587\u67e5\u8be2\u3002\n#### opt_value \u548c opt_name\n`opt_value` \u548c `opt_name` \u4ee3\u8868 [\u7247\u6bb5\u751f\u6210\u9009\u9879](../Searching/Highlighting.md)\u3002\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_225\n<!-- response SQL -->\nCODE_BLOCK_226\n\n<!-- end -->",
  26. "russian": "CODE_BLOCK_147\n<!-- response PHP -->\nCODE_BLOCK_148\n<!-- request Python -->\nCODE_BLOCK_149\n<!-- response Python -->\nCODE_BLOCK_150\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_151\n<!-- response Python-asyncio -->\nCODE_BLOCK_152\n\n<!-- request Javascript -->\nCODE_BLOCK_153\n<!-- response Javascript -->\nCODE_BLOCK_154\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_155\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_156\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_157\n\n<!-- request TypeScript -->\nCODE_BLOCK_158\n<!-- response TypeScript -->\nCODE_BLOCK_159\n\n<!-- request Go -->\nCODE_BLOCK_160\n<!-- response Go -->\nCODE_BLOCK_161\n\n\n<!-- end -->\n\n<!-- example fragment_size -->\n#### fragment_size\n`fragment_size` \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043b\u0438 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u041e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 256. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `limit`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_162\n<!-- request PHP -->\n\nCODE_BLOCK_163\n<!-- response PHP -->\nCODE_BLOCK_164\n<!-- request Python -->\nCODE_BLOCK_165\n<!-- response Python -->\nCODE_BLOCK_166\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_167\n<!-- response Python-asyncio -->\nCODE_BLOCK_168\n\n<!-- request Javascript -->\nCODE_BLOCK_169\n<!-- response Javascript -->\nCODE_BLOCK_170\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_171\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_172\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_173\n\n<!-- request TypeScript -->\nCODE_BLOCK_174\n<!-- response TypeScript -->\nCODE_BLOCK_175\n\n<!-- request Go -->\nCODE_BLOCK_176\n<!-- response Go -->\nCODE_BLOCK_177\n\n<!-- end -->\n\n<!-- example number_of_fragments -->\n#### number_of_fragments\n`number_of_fragments` \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435. \u041a\u0430\u043a \u0438 `fragment_size`, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043b\u0438 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 0 (\u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f). \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `limit_snippets`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_178\n<!-- request PHP -->\n\nCODE_BLOCK_179\n<!-- response PHP -->\nCODE_BLOCK_180\n\n<!-- request Python -->\nCODE_BLOCK_181\n<!-- response Python -->\nCODE_BLOCK_182\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_183\n<!-- response Python-asyncio -->\nCODE_BLOCK_184\n\n<!-- request Javascript -->\nCODE_BLOCK_185\n<!-- response Javascript -->\nCODE_BLOCK_186\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_187\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_188\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_189\n\n<!-- request TypeScript -->\nCODE_BLOCK_190\n<!-- response TypeScript -->\nCODE_BLOCK_191\n\n<!-- request Go -->\nCODE_BLOCK_192\n<!-- response Go -->\nCODE_BLOCK_193\n\n<!-- end -->\n\n<!-- example highlight json per-field limits -->\n\n#### limit, limit_words, limit_snippets\n\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a `limit`, `limit_words` \u0438 `limit_snippets`, \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043b\u0438\u043c\u0438\u0442\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439, \u0435\u0441\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0438\u0445. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u0435 `title` \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u043f\u043e\u043b\u0435 `content` \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043b\u0438\u043c\u0438\u0442\u044b.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_194\n<!-- request PHP -->\n\nCODE_BLOCK_195\n<!-- response PHP -->\nCODE_BLOCK_196\n<!-- request Python -->\nCODE_BLOCK_197\n<!-- response Python -->\nCODE_BLOCK_198\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_199\n<!-- response Python-asyncio -->\nCODE_BLOCK_200\n\n<!-- request Javascript -->\nCODE_BLOCK_201\n<!-- response Javascript -->\nCODE_BLOCK_202\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_203\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_204\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_205\n\n<!-- request TypeScript -->\nCODE_BLOCK_206\n<!-- response TypeScript -->\nCODE_BLOCK_207\n\n<!-- request Go -->\nCODE_BLOCK_208\n<!-- response Go -->\nCODE_BLOCK_209\n\n<!-- end -->\n\n<!-- example highlight json global limits -->\n\n#### limits_per_field\n\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c, \u0437\u0430\u0434\u0430\u0432 `limits_per_field=0`. \u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043b\u0438\u043c\u0438\u0442\u044b. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c, \u0435\u0441\u043b\u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u043c\u0438.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_210\n<!-- request PHP -->\n\nCODE_BLOCK_211\n<!-- response PHP -->\nCODE_BLOCK_212\n<!-- request Python -->\nCODE_BLOCK_213\n<!-- response Python -->\nCODE_BLOCK_214\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_215\n<!-- response Python-asyncio -->\nCODE_BLOCK_216\n\n<!-- request Javascript -->\nCODE_BLOCK_217\n<!-- response Javascript -->\nCODE_BLOCK_218\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_219\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_220\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_221\n\n<!-- request TypeScript -->\nCODE_BLOCK_222\n\n<!-- request Go -->\nCODE_BLOCK_223\n<!-- end -->\n\n## CALL SNIPPETS\n\n<!-- example CALL SNIPPETS -->\n\n\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f `CALL SNIPPETS` \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041e\u043d\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e [HIGHLIGHT()](../Searching/Highlighting.md).\n\n\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:\n\nCODE_BLOCK_224\n\n#### data\n`data` \u0441\u043b\u0443\u0436\u0438\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445.\n#### table\n`table` \u2014 \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432.\n#### query\n`query` \u2014 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432.\n#### opt_value \u0438 opt_name\n`opt_value` \u0438 `opt_name` \u2014 \u044d\u0442\u043e [\u043e\u043f\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432](../Searching/Highlighting.md).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_225\n<!-- response SQL -->\nCODE_BLOCK_226\n\n<!-- end -->"
  27. },
  28. "is_code_or_comment": false,
  29. "model": "openai:gpt-4.1-mini",
  30. "updated_at": 1766339810
  31. },
  32. "1274972b10c796724a1c50b56a99b5ff9404cf5d2828462de13442ff4f93931c": {
  33. "original": "#### html_strip_mode\nDefines the HTML stripping mode setting. Defaults to `index`, meaning that table settings will be used. Other values include `none` and `strip`, which forcibly skip or apply stripping regardless of table settings; and `retain`, which retains HTML markup and protects it from highlighting. The `retain` mode can only be used when highlighting full documents and therefore requires that no snippet size limits are set. The allowed string values are `none`, `strip`, `index`, and `retain`.\n\n#### allow_empty\nPermits an empty string to be returned as the highlighting result when no snippets could be generated in the current field (no keyword match or no snippets fit the limit). By default, the beginning of the original text would be returned instead of an empty string. The default is 0 (don't allow an empty result).\n\n#### snippet_boundary\nEnsures that snippets do not cross a sentence, paragraph, or zone boundary (when used with a table that has the respective indexing settings enabled). The allowed values are `sentence`, `paragraph`, and `zone`.\n\n#### emit_zones\nEmits an HTML tag with the enclosing zone name before each snippet. The default is 0 (don't emit zone names).\n\n#### force_snippets\nDetermines whether to force snippet generation even if limits allow highlighting the entire text. The default is 0 (don't force snippet generation).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_22\n\n<!-- response SQL -->\nCODE_BLOCK_23\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_24\n\n<!-- response JSON -->\n\nCODE_BLOCK_25\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_26\n\n<!-- response PHP -->\nCODE_BLOCK_27\n\n<!-- request Python -->\nCODE_BLOCK_28\n<!-- response Python -->\nCODE_BLOCK_29\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_30\n<!-- response Python-asyncio -->\nCODE_BLOCK_31\n\n<!-- request Javascript -->\nCODE_BLOCK_32\n<!-- response Javascript -->\nCODE_BLOCK_33\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_34\n\n<!-- response Java -->\nCODE_BLOCK_35\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_36\n\n<!-- response C# -->\nCODE_BLOCK_37\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_38\n\n<!-- response Rust -->\nCODE_BLOCK_39\n\n<!-- request TypeScript -->\nCODE_BLOCK_40\n<!-- response TypeScript -->\nCODE_BLOCK_41\n\n<!-- request Go -->\nCODE_BLOCK_42\n<!-- response Go -->\nCODE_BLOCK_43\n\n\n<!-- end -->\n\n\n## Highlighting via SQL\n\nThe `HIGHLIGHT()` function can be used to highlight search results. Here's the syntax:\n\nCODE_BLOCK_44\n\n<!-- example highlight() no args -->\nBy default, it works with no arguments.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_45\n\n<!-- response SQL -->\nCODE_BLOCK_46\n\n<!-- end -->\n\n<!-- example highlight() field syntax -->\n\n`HIGHLIGHT()` retrieves all available full-text fields from document storage and highlights them against the provided query. Field syntax in queries is supported. Field text is separated by `field_separator`, which can be modified in the options.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_47\n\n<!-- response SQL -->\nCODE_BLOCK_48\n\n<!-- end -->\n\n<!-- example highlight() options -->\nOptional first argument in `HIGHLIGHT()` is the list of options.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_49\n\n<!-- response SQL -->\nCODE_BLOCK_50\n\n<!-- end -->\n\n<!-- example highlight() field list -->\n\nThe optional second argument is a string containing a single field or a comma-separated list of fields. If this argument is present, only the specified fields will be fetched from document storage and highlighted. An empty string as the second argument signifies \"fetch all available fields.\"\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_51\n\n<!-- response SQL -->\nCODE_BLOCK_52\n\n<!-- end -->\n\n<!-- example highlight() string attr -->\n\nAlternatively, you can use the second argument to specify a string attribute or field name without quotes. In this case, the supplied string will be highlighted against the provided query, but field syntax will be ignored.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_53\n\n<!-- response SQL -->\nCODE_BLOCK_54\n\n<!-- end -->\n\n<!-- example highlight() query -->\n\nThe optional third argument is the query. This is used to highlight search results against a query different from the one used for searching.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_55\n\n<!-- response SQL -->\nCODE_BLOCK_56\n\n<!-- end -->\n\n<!-- example HIGHLIGHT TO_STRING -->\n\nAlthough `HIGHLIGHT()` is designed to work with stored full-text fields and string attributes, it can also be used to highlight arbitrary text. Keep in mind that if the query contains any field search operators (e.g., `@title hello @body world`), the field part of them is ignored in this case.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_57\n\n<!-- response SQL -->\nCODE_BLOCK_58\n\n<!-- end -->\n\nSeveral options are relevant only when generating a single string as a result (not an array of snippets). This applies exclusively to the SQL `HIGHLIGHT()` function:\n\n#### snippet_separator\nA string to insert between snippets. The default is ` ... `.\n#### field_separator\nA string to insert between fields. The default is `|`.\n\n\nAnother way to highlight text is to use the [CALL SNIPPETS](../Searching/Highlighting.md#CALL-SNIPPETS) statement. This mostly duplicates the `HIGHLIGHT()` functionality but cannot use built-in document storage. However, it can load source text from files.\n\n\n## Highlighting via HTTP\n\n<!-- example highlight in JSON -->\n\nTo highlight full-text search results in JSON queries via HTTP, field contents must be stored in document storage (enabled by default). In the example, full-text fields `content` and `title` are fetched from document storage and highlighted against the query specified in the `query` clause.\n\nHighlighted snippets are returned in the `highlight` property of the `hits` array.\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_59\n\n<!-- response JSON -->\n\nCODE_BLOCK_60\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_61",
  34. "translations": {
  35. "chinese": "#### html_strip_mode\n\u5b9a\u4e49 HTML \u53bb\u9664\u6a21\u5f0f\u8bbe\u7f6e\u3002\u9ed8\u8ba4\u503c\u4e3a `index`\uff0c\u8868\u793a\u5c06\u4f7f\u7528\u8868\u7684\u8bbe\u7f6e\u3002\u5176\u4ed6\u503c\u5305\u62ec `none` \u548c `strip`\uff0c\u5206\u522b\u8868\u793a\u65e0\u89c6\u8868\u8bbe\u7f6e\u5f3a\u5236\u8df3\u8fc7\u6216\u5e94\u7528\u53bb\u9664\uff1b\u4ee5\u53ca `retain`\uff0c\u8868\u793a\u4fdd\u7559 HTML \u6807\u8bb0\u5e76\u4fdd\u62a4\u5176\u4e0d\u88ab\u9ad8\u4eae\u3002`retain` \u6a21\u5f0f\u4ec5\u5728\u9ad8\u4eae\u5b8c\u6574\u6587\u6863\u65f6\u53ef\u7528\uff0c\u56e0\u6b64\u8981\u6c42\u4e0d\u8bbe\u7f6e\u7247\u6bb5\u5927\u5c0f\u9650\u5236\u3002\u5141\u8bb8\u7684\u5b57\u7b26\u4e32\u503c\u6709 `none`, `strip`, `index` \u548c `retain`\u3002\n\n#### allow_empty\n\u5141\u8bb8\u5728\u5f53\u524d\u5b57\u6bb5\u65e0\u6cd5\u751f\u6210\u4efb\u4f55\u7247\u6bb5\uff08\u65e0\u5173\u952e\u8bcd\u5339\u914d\u6216\u65e0\u7247\u6bb5\u7b26\u5408\u9650\u5236\uff09\u65f6\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\u4f5c\u4e3a\u9ad8\u4eae\u7ed3\u679c\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u8fd4\u56de\u539f\u59cb\u6587\u672c\u7684\u5f00\u5934\u800c\u975e\u7a7a\u5b57\u7b26\u4e32\u3002\u9ed8\u8ba4\u503c\u4e3a 0\uff08\u4e0d\u5141\u8bb8\u7a7a\u7ed3\u679c\uff09\u3002\n\n#### snippet_boundary\n\u786e\u4fdd\u7247\u6bb5\u4e0d\u4f1a\u8de8\u8d8a\u53e5\u5b50\u3001\u6bb5\u843d\u6216\u533a\u57df\u8fb9\u754c\uff08\u5f53\u4e0e\u542f\u7528\u4e86\u76f8\u5e94\u7d22\u5f15\u8bbe\u7f6e\u7684\u8868\u914d\u5408\u4f7f\u7528\u65f6\uff09\u3002\u5141\u8bb8\u7684\u503c\u6709 `sentence`\u3001`paragraph` \u548c `zone`\u3002\n\n#### emit_zones\n\u5728\u6bcf\u4e2a\u7247\u6bb5\u524d\u53d1\u51fa\u5305\u542b\u5916\u5c42\u533a\u57df\u540d\u79f0\u7684 HTML \u6807\u7b7e\u3002\u9ed8\u8ba4\u503c\u4e3a 0\uff08\u4e0d\u53d1\u51fa\u533a\u57df\u540d\u79f0\uff09\u3002\n\n#### force_snippets\n\u51b3\u5b9a\u662f\u5426\u5f3a\u5236\u751f\u6210\u7247\u6bb5\uff0c\u5373\u4f7f\u9650\u5236\u5141\u8bb8\u9ad8\u4eae\u6574\u4e2a\u6587\u672c\u3002\u9ed8\u8ba4\u503c\u4e3a 0\uff08\u4e0d\u5f3a\u5236\u751f\u6210\u7247\u6bb5\uff09\u3002\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_22\n\n<!-- response SQL -->\nCODE_BLOCK_23\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_24\n\n<!-- response JSON -->\n\nCODE_BLOCK_25\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_26\n\n<!-- response PHP -->\nCODE_BLOCK_27\n\n<!-- request Python -->\nCODE_BLOCK_28\n<!-- response Python -->\nCODE_BLOCK_29\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_30\n<!-- response Python-asyncio -->\nCODE_BLOCK_31\n\n<!-- request Javascript -->\nCODE_BLOCK_32\n<!-- response Javascript -->\nCODE_BLOCK_33\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_34\n\n<!-- response Java -->\nCODE_BLOCK_35\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_36\n\n<!-- response C# -->\nCODE_BLOCK_37\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_38\n\n<!-- response Rust -->\nCODE_BLOCK_39\n\n<!-- request TypeScript -->\nCODE_BLOCK_40\n<!-- response TypeScript -->\nCODE_BLOCK_41\n\n<!-- request Go -->\nCODE_BLOCK_42\n<!-- response Go -->\nCODE_BLOCK_43\n\n\n<!-- end -->\n\n\n## \u901a\u8fc7 SQL \u8fdb\u884c\u9ad8\u4eae\n\n`HIGHLIGHT()` \u51fd\u6570\u53ef\u7528\u4e8e\u9ad8\u4eae\u641c\u7d22\u7ed3\u679c\u3002\u8bed\u6cd5\u5982\u4e0b\uff1a\n\nCODE_BLOCK_44\n\n<!-- example highlight() no args -->\n\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8c03\u7528\u65f6\u4e0d\u5e26\u53c2\u6570\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_45\n\n<!-- response SQL -->\nCODE_BLOCK_46\n\n<!-- end -->\n\n<!-- example highlight() field syntax -->\n\n`HIGHLIGHT()` \u4ece\u6587\u6863\u5b58\u50a8\u4e2d\u68c0\u7d22\u6240\u6709\u53ef\u7528\u5168\u6587\u5b57\u6bb5\uff0c\u5e76\u9488\u5bf9\u63d0\u4f9b\u7684\u67e5\u8be2\u8fdb\u884c\u9ad8\u4eae\u3002\u67e5\u8be2\u652f\u6301\u5b57\u6bb5\u8bed\u6cd5\u3002\u5b57\u6bb5\u6587\u672c\u7528 `field_separator` \u5206\u9694\uff0c\u53ef\u5728\u9009\u9879\u4e2d\u4fee\u6539\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_47\n\n<!-- response SQL -->\nCODE_BLOCK_48\n\n<!-- end -->\n\n<!-- example highlight() options -->\n`HIGHLIGHT()` \u7684\u7b2c\u4e00\u4e2a\u53ef\u9009\u53c2\u6570\u662f\u9009\u9879\u5217\u8868\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_49\n\n<!-- response SQL -->\nCODE_BLOCK_50\n\n<!-- end -->\n\n<!-- example highlight() field list -->\n\n\u7b2c\u4e8c\u4e2a\u53ef\u9009\u53c2\u6570\u662f\u5305\u542b\u5355\u4e2a\u5b57\u6bb5\u6216\u9017\u53f7\u5206\u9694\u5b57\u6bb5\u5217\u8868\u7684\u5b57\u7b26\u4e32\u3002\u5982\u679c\u6b64\u53c2\u6570\u5b58\u5728\uff0c\u5219\u4ec5\u4ece\u6587\u6863\u5b58\u50a8\u4e2d\u83b7\u53d6\u5e76\u9ad8\u4eae\u6307\u5b9a\u5b57\u6bb5\u3002\u4f5c\u4e3a\u7b2c\u4e8c\u53c2\u6570\u7684\u7a7a\u5b57\u7b26\u4e32\u8868\u793a\u201c\u83b7\u53d6\u6240\u6709\u53ef\u7528\u5b57\u6bb5\u201d\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_51\n\n<!-- response SQL -->\nCODE_BLOCK_52\n\n<!-- end -->\n\n<!-- example highlight() string attr -->\n\n\u6216\u8005\uff0c\u60a8\u4e5f\u53ef\u4ee5\u4f7f\u7528\u7b2c\u4e8c\u4e2a\u53c2\u6570\u6307\u5b9a\u5b57\u7b26\u4e32\u5c5e\u6027\u6216\u5b57\u6bb5\u540d\uff08\u4e0d\u52a0\u5f15\u53f7\uff09\u3002\u6b64\u60c5\u51b5\u4e0b\uff0c\u5c06\u9488\u5bf9\u67e5\u8be2\u5bf9\u63d0\u4f9b\u7684\u5b57\u7b26\u4e32\u9ad8\u4eae\uff0c\u4f46\u5ffd\u7565\u5b57\u6bb5\u8bed\u6cd5\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_53\n\n<!-- response SQL -->\nCODE_BLOCK_54\n\n<!-- end -->\n\n<!-- example highlight() query -->\n\n\u7b2c\u4e09\u4e2a\u53ef\u9009\u53c2\u6570\u662f\u67e5\u8be2\u3002\u7528\u4e8e\u5bf9\u4e0d\u540c\u4e8e\u641c\u7d22\u4f7f\u7528\u7684\u67e5\u8be2\u8fdb\u884c\u9ad8\u4eae\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_55\n\n<!-- response SQL -->\nCODE_BLOCK_56\n\n<!-- end -->\n\n<!-- example HIGHLIGHT TO_STRING -->\n\n\u5c3d\u7ba1 `HIGHLIGHT()` \u8bbe\u8ba1\u7528\u4e8e\u5b58\u50a8\u7684\u5168\u6587\u5b57\u6bb5\u548c\u5b57\u7b26\u4e32\u5c5e\u6027\uff0c\u4e5f\u53ef\u4ee5\u7528\u6765\u9ad8\u4eae\u4efb\u610f\u6587\u672c\u3002\u6ce8\u610f\uff0c\u5982\u679c\u67e5\u8be2\u5305\u542b\u5b57\u6bb5\u641c\u7d22\u8fd0\u7b97\u7b26\uff08\u4f8b\u5982 `@title hello @body world`\uff09\uff0c\u6b64\u65f6\u4f1a\u5ffd\u7565\u5b83\u4eec\u7684\u5b57\u6bb5\u90e8\u5206\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_57\n\n<!-- response SQL -->\nCODE_BLOCK_58\n\n<!-- end -->\n\n\u4e00\u4e9b\u9009\u9879\u4ec5\u5728\u751f\u6210\u5355\u4e2a\u5b57\u7b26\u4e32\u7ed3\u679c\uff08\u975e\u7247\u6bb5\u6570\u7ec4\uff09\u65f6\u76f8\u5173\u3002\u8fd9\u53ea\u9002\u7528\u4e8e SQL \u7684 `HIGHLIGHT()` \u51fd\u6570\uff1a\n\n#### snippet_separator\n\u63d2\u5165\u4e8e\u7247\u6bb5\u4e4b\u95f4\u7684\u5b57\u7b26\u4e32\u3002\u9ed8\u8ba4\u503c\u4e3a ` ... `\u3002\n#### field_separator\n\u63d2\u5165\u4e8e\u5b57\u6bb5\u4e4b\u95f4\u7684\u5b57\u7b26\u4e32\u3002\u9ed8\u8ba4\u503c\u4e3a `|`\u3002\n\n\u53e6\u4e00\u79cd\u9ad8\u4eae\u6587\u672c\u7684\u65b9\u5f0f\u662f\u4f7f\u7528[CALL SNIPPETS](../Searching/Highlighting.md#CALL-SNIPPETS) \u8bed\u53e5\u3002\u5176\u529f\u80fd\u5927\u4f53\u4e0a\u4e0e `HIGHLIGHT()` \u76f8\u540c\uff0c\u4f46\u65e0\u6cd5\u4f7f\u7528\u5185\u7f6e\u6587\u6863\u5b58\u50a8\u3002\u4e0d\u8fc7\uff0c\u53ef\u4ee5\u4ece\u6587\u4ef6\u52a0\u8f7d\u6e90\u6587\u672c\u3002\n\n\n## \u901a\u8fc7 HTTP \u8fdb\u884c\u9ad8\u4eae\n\n<!-- example highlight in JSON -->\n\n\u8981\u901a\u8fc7 HTTP \u5728 JSON \u67e5\u8be2\u4e2d\u9ad8\u4eae\u5168\u6587\u641c\u7d22\u7ed3\u679c\uff0c\u5b57\u6bb5\u5185\u5bb9\u5fc5\u987b\u5b58\u50a8\u4e8e\u6587\u6863\u5b58\u50a8\uff08\u9ed8\u8ba4\u542f\u7528\uff09\u3002\u793a\u4f8b\u4e2d\u4ece\u6587\u6863\u5b58\u50a8\u83b7\u53d6\u5168\u6587\u5b57\u6bb5 `content` \u548c `title`\uff0c\u5e76\u6839\u636e `query` \u5b50\u53e5\u4e2d\u6307\u5b9a\u7684\u67e5\u8be2\u8fdb\u884c\u9ad8\u4eae\u3002\n\n\u9ad8\u4eae\u7247\u6bb5\u5728 `hits` \u6570\u7ec4\u7684 `highlight` \u5c5e\u6027\u4e2d\u8fd4\u56de\u3002\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_59\n\n<!-- response JSON -->\n\nCODE_BLOCK_60\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_61",
  36. "russian": "#### html_strip_mode\n\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f HTML. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 `index`, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0414\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 `none` \u0438 `strip`, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b; \u0438 `retain`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0438 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u0435\u0451 \u043e\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438. \u0420\u0435\u0436\u0438\u043c `retain` \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0435 \u043f\u043e\u043b\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: `none`, `strip`, `index` \u0438 `retain`.\n\n#### allow_empty\n\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044f (\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 \u0438\u043b\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043b\u0438\u043c\u0438\u0442). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442).\n\n#### snippet_boundary\n\u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430\u0431\u0437\u0430\u0446\u0430 \u0438\u043b\u0438 \u0437\u043e\u043d\u044b (\u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f). \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: `sentence`, `paragraph` \u0438 `zone`.\n\n#### emit_zones\n\u0412\u044b\u0432\u043e\u0434\u0438\u0442 HTML-\u0442\u0435\u0433 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0437\u043e\u043d\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u043c. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u0437\u043e\u043d).\n\n#### force_snippets\n\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043b\u0438\u043c\u0438\u0442\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_22\n\n<!-- response SQL -->\nCODE_BLOCK_23\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_24\n\n<!-- response JSON -->\n\nCODE_BLOCK_25\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_26\n\n<!-- response PHP -->\nCODE_BLOCK_27\n\n<!-- request Python -->\nCODE_BLOCK_28\n<!-- response Python -->\nCODE_BLOCK_29\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_30\n<!-- response Python-asyncio -->\nCODE_BLOCK_31\n\n<!-- request Javascript -->\nCODE_BLOCK_32\n<!-- response Javascript -->\nCODE_BLOCK_33\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_34\n\n<!-- response Java -->\nCODE_BLOCK_35\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_36\n\n<!-- response C# -->\nCODE_BLOCK_37\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_38\n\n<!-- response Rust -->\nCODE_BLOCK_39\n\n<!-- request TypeScript -->\nCODE_BLOCK_40\n<!-- response TypeScript -->\nCODE_BLOCK_41\n\n<!-- request Go -->\nCODE_BLOCK_42\n<!-- response Go -->\nCODE_BLOCK_43\n\n\n<!-- end -->\n\n\n## \u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 SQL\n\n\u0424\u0443\u043d\u043a\u0446\u0438\u044f `HIGHLIGHT()` \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:\n\nCODE_BLOCK_44\n\n<!-- example highlight() no args -->\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_45\n\n<!-- response SQL -->\nCODE_BLOCK_46\n\n<!-- end -->\n\n<!-- example highlight() field syntax -->\n\n`HIGHLIGHT()` \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445. \u0422\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c `field_separator`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043e\u043f\u0446\u0438\u044f\u0445.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_47\n\n<!-- response SQL -->\nCODE_BLOCK_48\n\n<!-- end -->\n\n<!-- example highlight() options -->\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432 `HIGHLIGHT()` \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0446\u0438\u0439.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_49\n\n<!-- response SQL -->\nCODE_BLOCK_50\n\n<!-- end -->\n\n<!-- example highlight() field list -->\n\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u043e\u043b\u0435\u043c \u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u0435\u0439, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u041f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f\u00bb.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_51\n\n<!-- response SQL -->\nCODE_BLOCK_52\n\n<!-- end -->\n\n<!-- example highlight() string attr -->\n\n\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0438\u043b\u0438 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044f \u0431\u0435\u0437 \u043a\u0430\u0432\u044b\u0447\u0435\u043a. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443, \u043d\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e\u043b\u0435\u0439 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_53\n\n<!-- response SQL -->\nCODE_BLOCK_54\n\n<!-- end -->\n\n<!-- example highlight() query -->\n\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0440\u0435\u0442\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u0437\u0430\u043f\u0440\u043e\u0441. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_55\n\n<!-- response SQL -->\nCODE_BLOCK_56\n\n<!-- end -->\n\n<!-- example HIGHLIGHT TO_STRING -->\n\n\u0425\u043e\u0442\u044f `HIGHLIGHT()` \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u0435\u0451 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u043f\u043e\u043b\u044f\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `@title hello @body world`), \u0442\u043e \u043f\u043e\u043b\u0435 \u0432 \u0442\u0430\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_57\n\n<!-- response SQL -->\nCODE_BLOCK_58\n\n<!-- end -->\n\n\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u043d\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432). \u042d\u0442\u043e \u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u043e \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 SQL `HIGHLIGHT()`:\n\n#### snippet_separator\n\u0421\u0442\u0440\u043e\u043a\u0430, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0430\u044f \u043c\u0435\u0436\u0434\u0443 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 ` ... `.\n#### field_separator\n\u0421\u0442\u0440\u043e\u043a\u0430, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0430\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u044f\u043c\u0438. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 `|`.\n\n\n\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 [CALL SNIPPETS](../Searching/Highlighting.md#CALL-SNIPPETS). \u041e\u043d \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c `HIGHLIGHT()`, \u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0417\u0430\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432.\n\n\n## \u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 HTTP\n\n<!-- example highlight in JSON -->\n\n\u0414\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 HTTP \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e). \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f `content` \u0438 `title` \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u0431\u043b\u043e\u043a\u0435 `query`.\n\n\u041f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 `highlight` \u043c\u0430\u0441\u0441\u0438\u0432\u0430 `hits`.\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_59\n\n<!-- response JSON -->\n\nCODE_BLOCK_60\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_61"
  37. },
  38. "is_code_or_comment": false,
  39. "model": "openai:gpt-4.1-mini",
  40. "updated_at": 1766339812
  41. },
  42. "66c5e053de0f5eb111c15dd51152469964326a8f360f250d4d696787755dc5ad": {
  43. "original": "# Highlighting\n\n<!-- example highlighting -->\n\nHighlighting enables you to obtain highlighted text fragments (referred to as snippets) from documents containing matching keywords.\n\nThe SQL `HIGHLIGHT()` function, the `\"highlight\"` property in JSON queries via HTTP, and the `highlight()` function in the PHP client all utilize the built-in document storage to retrieve the original field contents (enabled by default).\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_0\n\n<!-- response SQL -->\n\nCODE_BLOCK_1\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_2\n\n<!-- response JSON -->\n\nCODE_BLOCK_3\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_4\n\n<!-- response PHP -->\nCODE_BLOCK_5\n\n<!-- request Python -->\nCODE_BLOCK_6\n<!-- response Python -->\nCODE_BLOCK_7\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_8\n<!-- response Python-asyncio -->\nCODE_BLOCK_9\n\n<!-- request Javascript -->\nCODE_BLOCK_10\n<!-- response Javascript -->\nCODE_BLOCK_11\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_12\n\n<!-- response Java -->\nCODE_BLOCK_13\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_14\n\n<!-- response C# -->\nCODE_BLOCK_15\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\nCODE_BLOCK_16\n\n<!-- response Rust -->\nCODE_BLOCK_17\n\n<!-- request TypeScript -->\nCODE_BLOCK_18\n<!-- response TypeScript -->\nCODE_BLOCK_19\n\n<!-- request Go -->\nCODE_BLOCK_20\n<!-- response Go -->\nCODE_BLOCK_21\n\n<!-- end -->\n\nWhen using SQL for highlighting search results, you will receive snippets from various fields combined into a single string due to the limitations of the MySQL protocol. You can adjust the concatenation separators with the `field_separator` and `snippet_separator` options, as detailed below.\n\nWhen executing JSON queries through HTTP or using the PHP client, there are no such constraints, and the result set includes an array of fields containing arrays of snippets (without separators).\n\nKeep in mind that snippet generation options like `limit`, `limit_words`, and `limit_snippets` apply to each field individually by default. You can alter this behavior using the `limits_per_field` option, but it could lead to unwanted results. For example, one field may have matching keywords, but no snippets from that field are included in the result set because they didn't rank as high as snippets from other fields in the highlighting engine.\n\nThe highlighting algorithm currently prioritizes better snippets (with closer phrase matches) and then snippets with keywords not yet included in the result. Generally, it aims to highlight the best match for the query and to highlight all query keywords, as allowed by the limits. If no matches are found in the current field, the beginning of the document will be trimmed according to the limits and returned by default. To return an empty string instead, set the `allow_empty` option to 1.\n\nHighlighting is performed during the so-called `post limit` stage, which means that snippet generation is deferred not only until the entire final result set is prepared but also after the LIMIT clause is applied. For instance, with a LIMIT 20,10 clause, the `HIGHLIGHT()` function will be called a maximum of 10 times.\n\n## Highlighting options\n\n<!-- example highlighting options -->\n\nThere are several optional highlighting options that can be used to fine-tune snippet generation, which are common to SQL, HTTP, and PHP clients.\n\n#### before_match\nA string to insert before a keyword match. The `%SNIPPET_ID%` macro can be used in this string. The first occurrence of the macro is replaced with an incrementing snippet number within the current snippet. Numbering starts at 1 by default but can be overridden with the `start_snippet_id` option. %SNIPPET_ID% restarts at the beginning of each new document. The default is `<b>`.\n\n#### after_match\nA string to insert after a keyword match. The default is `</b>`.\n\n#### limit\nThe maximum snippet size, in symbols (codepoints). The default is 256. This is applied per-field by default, see `limits_per_field`.\n\n#### limit_words\nLimits the maximum number of words that can be included in the result. Note that this limit applies to all words, not just the matched keywords to highlight. For example, if highlighting `Mary` and a snippet `Mary had a little lamb` is selected, it contributes 5 words to this limit, not just 1. The default is 0 (no limit). This is applied per-field by default, see `limits_per_field`.\n\n#### limit_snippets\nLimits the maximum number of snippets that can be included in the result. The default is 0 (no limit). This is applied per-field by default, see `limits_per_field`.\n\n#### limits_per_field\nDetermines whether `limit`, `limit_words`, and `limit_snippets` operate as individual limits in each field of the document being highlighted or as global limits for the entire document. Setting this option to 0 means that all combined highlighting results for one document must be within the specified limits. The downside is that you may have several snippets highlighted in one field and none in another if the highlighting engine decides they are more relevant. The default is 1 (use per-field limits).\n#### around\nThe number of words to select around each matching keyword block. The default is 5.\n\n#### use_boundaries\nDetermines whether to additionally break snippets by phrase boundary characters, as configured in table settings with the [phrase_boundary](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#phrase_boundary) directive. The default is 0 (don't use boundaries).\n\n#### weight_order\nSpecifies whether to sort the extracted snippets in order of relevance (decreasing weight) or in order of appearance in the document (increasing position). The default is 0 (don't use weight order).\n\n#### force_all_words\nIgnores the length limit until the result includes all keywords. The default is 0 (don't force all keywords).\n\n#### start_snippet_id\nSets the starting value of the `%SNIPPET_ID%` macro (which is detected and expanded in `before_match`, `after_match` strings). The default is 1.",
  44. "translations": {
  45. "chinese": "# \u9ad8\u4eae\u663e\u793a\n\n<!-- example highlighting -->\n\n\u9ad8\u4eae\u663e\u793a\u4f7f\u60a8\u80fd\u591f\u4ece\u5305\u542b\u5339\u914d\u5173\u952e\u8bcd\u7684\u6587\u6863\u4e2d\u83b7\u53d6\u9ad8\u4eae\u7684\u6587\u672c\u7247\u6bb5\uff08\u79f0\u4e3a\u7247\u6bb5\uff09\u3002\n\nSQL \u4e2d\u7684 `HIGHLIGHT()` \u51fd\u6570\uff0c\u901a\u8fc7 HTTP \u7684 JSON \u67e5\u8be2\u4e2d\u7684 `\"highlight\"` \u5c5e\u6027\uff0c\u4ee5\u53ca PHP \u5ba2\u6237\u7aef\u4e2d\u7684 `highlight()` \u51fd\u6570\uff0c\u5747\u5229\u7528\u5185\u7f6e\u7684\u6587\u6863\u5b58\u50a8\u6765\u68c0\u7d22\u539f\u59cb\u5b57\u6bb5\u5185\u5bb9\uff08\u9ed8\u8ba4\u542f\u7528\uff09\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_0\n\n<!-- response SQL -->\n\nCODE_BLOCK_1\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_2\n\n<!-- response JSON -->\n\nCODE_BLOCK_3\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_4\n\n<!-- response PHP -->\nCODE_BLOCK_5\n\n<!-- request Python -->\nCODE_BLOCK_6\n<!-- response Python -->\nCODE_BLOCK_7\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_8\n<!-- response Python-asyncio -->\nCODE_BLOCK_9\n\n<!-- request Javascript -->\nCODE_BLOCK_10\n<!-- response Javascript -->\nCODE_BLOCK_11\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_12\n\n<!-- response Java -->\nCODE_BLOCK_13\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_14\n\n<!-- response C# -->\nCODE_BLOCK_15\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\nCODE_BLOCK_16\n\n<!-- response Rust -->\nCODE_BLOCK_17\n\n<!-- request TypeScript -->\nCODE_BLOCK_18\n<!-- response TypeScript -->\nCODE_BLOCK_19\n\n<!-- request Go -->\nCODE_BLOCK_20\n<!-- response Go -->\nCODE_BLOCK_21\n\n<!-- end -->\n\n\u5f53\u4f7f\u7528 SQL \u8fdb\u884c\u641c\u7d22\u7ed3\u679c\u9ad8\u4eae\u65f6\uff0c\u7531\u4e8e MySQL \u534f\u8bae\u7684\u9650\u5236\uff0c\u60a8\u5c06\u4ece\u591a\u4e2a\u5b57\u6bb5\u63a5\u6536\u5408\u5e76\u4e3a\u5355\u4e2a\u5b57\u7b26\u4e32\u7684\u7247\u6bb5\u3002\u60a8\u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u8be6\u7ec6\u8bf4\u660e\u7684 `field_separator` \u548c `snippet_separator` \u9009\u9879\u8c03\u6574\u62fc\u63a5\u5206\u9694\u7b26\u3002\n\n\u5f53\u901a\u8fc7 HTTP \u6267\u884c JSON \u67e5\u8be2\u6216\u4f7f\u7528 PHP \u5ba2\u6237\u7aef\u65f6\uff0c\u6ca1\u6709\u6b64\u7c7b\u9650\u5236\uff0c\u7ed3\u679c\u96c6\u5c06\u5305\u542b\u4e00\u4e2a\u5b57\u6bb5\u6570\u7ec4\uff0c\u6bcf\u4e2a\u5b57\u6bb5\u5305\u542b\u7247\u6bb5\u6570\u7ec4\uff08\u65e0\u5206\u9694\u7b26\uff09\u3002\n\n\u8bf7\u6ce8\u610f\uff0c\u751f\u6210\u7247\u6bb5\u7684\u9009\u9879\u5982 `limit`\u3001`limit_words` \u548c `limit_snippets` \u9ed8\u8ba4\u662f\u9488\u5bf9\u6bcf\u4e2a\u5b57\u6bb5\u5355\u72ec\u751f\u6548\u7684\u3002\u60a8\u53ef\u4ee5\u901a\u8fc7 `limits_per_field` \u9009\u9879\u66f4\u6539\u6b64\u884c\u4e3a\uff0c\u4f46\u8fd9\u53ef\u80fd\u5bfc\u81f4\u4e0d\u5e0c\u671b\u51fa\u73b0\u7684\u7ed3\u679c\u3002\u4f8b\u5982\uff0c\u67d0\u4e2a\u5b57\u6bb5\u6709\u5339\u914d\u7684\u5173\u952e\u8bcd\uff0c\u4f46\u56e0\u9ad8\u4eae\u5f15\u64ce\u4e2d\u8be5\u5b57\u6bb5\u7684\u7247\u6bb5\u6392\u540d\u4e0d\u5982\u5176\u4ed6\u5b57\u6bb5\u9ad8\uff0c\u5bfc\u81f4\u8be5\u5b57\u6bb5\u7684\u7247\u6bb5\u672a\u5305\u542b\u5728\u7ed3\u679c\u96c6\u4e2d\u3002\n\n\u5f53\u524d\u7684\u9ad8\u4eae\u7b97\u6cd5\u4f18\u5148\u8003\u8651\u66f4\u597d\u7684\u7247\u6bb5\uff08\u5177\u6709\u66f4\u63a5\u8fd1\u7684\u77ed\u8bed\u5339\u914d\uff09\uff0c\u5176\u6b21\u662f\u5305\u542b\u5f53\u524d\u7ed3\u679c\u4e2d\u5c1a\u672a\u51fa\u73b0\u7684\u5173\u952e\u8bcd\u7684\u7247\u6bb5\u3002\u901a\u5e38\uff0c\u5b83\u65e8\u5728\u9ad8\u4eae\u67e5\u8be2\u7684\u6700\u4f73\u5339\u914d\uff0c\u5e76\u9ad8\u4eae\u5168\u90e8\u67e5\u8be2\u5173\u952e\u8bcd\uff08\u53d7\u9650\u5236\u6761\u4ef6\u5141\u8bb8\uff09\u3002\u5982\u679c\u5f53\u524d\u5b57\u6bb5\u6ca1\u6709\u5339\u914d\uff0c\u5219\u6839\u636e\u9650\u5236\u526a\u88c1\u6587\u6863\u5f00\u5934\u5e76\u8fd4\u56de\u9ed8\u8ba4\u5185\u5bb9\u3002\u82e5\u60f3\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\uff0c\u8bf7\u5c06 `allow_empty` \u9009\u9879\u8bbe\u7f6e\u4e3a 1\u3002\n\n\u9ad8\u4eae\u662f\u5728\u6240\u8c13\u7684 `post limit` \u9636\u6bb5\u6267\u884c\u7684\uff0c\u8fd9\u610f\u5473\u7740\u7247\u6bb5\u751f\u6210\u88ab\u63a8\u8fdf\uff0c\u4e0d\u4ec5\u76f4\u5230\u6574\u4e2a\u6700\u7ec8\u7ed3\u679c\u96c6\u51c6\u5907\u597d\uff0c\u800c\u4e14\u5728\u5e94\u7528 LIMIT \u5b50\u53e5\u4e4b\u540e\u3002\u4f8b\u5982\uff0c\u4f7f\u7528 LIMIT 20,10 \u5b50\u53e5\u65f6\uff0c`HIGHLIGHT()` \u51fd\u6570\u6700\u591a\u4f1a\u88ab\u8c03\u7528 10 \u6b21\u3002\n\n## \u9ad8\u4eae\u9009\u9879\n\n<!-- example highlighting options -->\n\n\u6709\u82e5\u5e72\u53ef\u9009\u9ad8\u4eae\u9009\u9879\u53ef\u7528\u4e8e\u5fae\u8c03\u7247\u6bb5\u751f\u6210\uff0c\u8fd9\u4e9b\u9009\u9879\u5728 SQL\u3001HTTP \u548c PHP \u5ba2\u6237\u7aef\u4e2d\u901a\u7528\u3002\n\n#### before_match\n\u63d2\u5165\u5230\u5173\u952e\u8bcd\u5339\u914d\u524d\u7684\u5b57\u7b26\u4e32\u3002\u6b64\u5b57\u7b26\u4e32\u4e2d\u53ef\u4ee5\u4f7f\u7528 `%SNIPPET_ID%` \u5b8f\u3002\u5b8f\u7684\u7b2c\u4e00\u6b21\u51fa\u73b0\u4f1a\u88ab\u66ff\u6362\u6210\u5f53\u524d\u7247\u6bb5\u5185\u9012\u589e\u7684\u7247\u6bb5\u7f16\u53f7\u3002\u7f16\u53f7\u9ed8\u8ba4\u4ece 1 \u5f00\u59cb\uff0c\u4f46\u53ef\u7528 `start_snippet_id` \u9009\u9879\u8986\u76d6\u3002%SNIPPET_ID% \u5728\u6bcf\u4e2a\u65b0\u6587\u6863\u5f00\u5934\u91cd\u65b0\u8ba1\u6570\u3002\u9ed8\u8ba4\u503c\u662f `<b>`\u3002\n\n#### after_match\n\u63d2\u5165\u5230\u5173\u952e\u8bcd\u5339\u914d\u540e\u7684\u5b57\u7b26\u4e32\u3002\u9ed8\u8ba4\u503c\u662f `</b>`\u3002\n\n#### limit\n\u7247\u6bb5\u6700\u5927\u5927\u5c0f\uff0c\u5355\u4f4d\u4e3a\u7b26\u53f7\uff08\u4ee3\u7801\u70b9\uff09\u3002\u9ed8\u8ba4\u503c\u662f 256\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6b64\u9650\u5236\u9488\u5bf9\u6bcf\u4e2a\u5b57\u6bb5\u5355\u72ec\u5e94\u7528\uff0c\u5177\u4f53\u89c1 `limits_per_field`\u3002\n\n#### limit_words\n\u9650\u5236\u7ed3\u679c\u4e2d\u5305\u542b\u7684\u6700\u5927\u5355\u8bcd\u6570\u3002\u6ce8\u610f\u6b64\u9650\u5236\u5e94\u7528\u4e8e\u6240\u6709\u5355\u8bcd\uff0c\u800c\u4e0d\u4ec5\u4ec5\u662f\u8981\u9ad8\u4eae\u7684\u5339\u914d\u5173\u952e\u8bcd\u3002\u4f8b\u5982\uff0c\u9ad8\u4eae `Mary`\uff0c\u800c\u9009\u4e2d\u7684\u7247\u6bb5\u4e3a `Mary had a little lamb`\uff0c\u8fd9\u5c06\u8ba1\u5165 5 \u4e2a\u5355\u8bcd\uff0c\u800c\u975e\u4ec5 1\u3002\u9ed8\u8ba4\u503c\u662f 0\uff08\u65e0\u9650\u5236\uff09\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6b64\u9650\u5236\u9488\u5bf9\u6bcf\u4e2a\u5b57\u6bb5\u5355\u72ec\u5e94\u7528\uff0c\u5177\u4f53\u89c1 `limits_per_field`\u3002\n\n#### limit_snippets\n\u9650\u5236\u7ed3\u679c\u4e2d\u5305\u542b\u7684\u6700\u5927\u7247\u6bb5\u6570\u3002\u9ed8\u8ba4\u503c\u662f 0\uff08\u65e0\u9650\u5236\uff09\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6b64\u9650\u5236\u9488\u5bf9\u6bcf\u4e2a\u5b57\u6bb5\u5355\u72ec\u5e94\u7528\uff0c\u5177\u4f53\u89c1 `limits_per_field`\u3002\n\n#### limits_per_field\n\u51b3\u5b9a `limit`\u3001`limit_words` \u548c `limit_snippets` \u662f\u5728\u6bcf\u4e2a\u5b57\u6bb5\u5185\u5206\u522b\u72ec\u7acb\u9650\u5236\uff0c\u8fd8\u662f\u5bf9\u6574\u4e2a\u6587\u6863\u4f5c\u4e3a\u5168\u5c40\u9650\u5236\u3002\u5c06\u6b64\u9009\u9879\u8bbe\u7f6e\u4e3a 0 \u8868\u793a\u4e00\u4e2a\u6587\u6863\u7684\u6240\u6709\u5408\u5e76\u9ad8\u4eae\u7ed3\u679c\u5fc5\u987b\u5728\u6307\u5b9a\u9650\u5236\u5185\u3002\u7f3a\u70b9\u662f\u5982\u679c\u9ad8\u4eae\u5f15\u64ce\u5224\u65ad\u67d0\u4e9b\u7247\u6bb5\u66f4\u76f8\u5173\uff0c\u67d0\u5b57\u6bb5\u53ef\u80fd\u7a81\u51fa\u663e\u793a\u591a\u4e2a\u7247\u6bb5\uff0c\u800c\u53e6\u4e00\u4e2a\u5b57\u6bb5\u53ef\u80fd\u6ca1\u6709\u7247\u6bb5\u3002\u9ed8\u8ba4\u503c\u662f 1\uff08\u4f7f\u7528\u6bcf\u5b57\u6bb5\u9650\u5236\uff09\u3002\n\n#### around\n\u6bcf\u4e2a\u5339\u914d\u5173\u952e\u8bcd\u5757\u5468\u56f4\u9009\u62e9\u7684\u5355\u8bcd\u6570\u3002\u9ed8\u8ba4\u503c\u662f 5\u3002\n\n#### use_boundaries\n\u51b3\u5b9a\u662f\u5426\u901a\u8fc7\u5728\u8868\u8bbe\u7f6e\u4e2d\u4f7f\u7528 [phrase_boundary](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#phrase_boundary) \u6307\u4ee4\u914d\u7f6e\u7684\u77ed\u8bed\u8fb9\u754c\u5b57\u7b26\uff0c\u989d\u5916\u62c6\u5206\u7247\u6bb5\u3002\u9ed8\u8ba4\u503c\u662f 0\uff08\u4e0d\u4f7f\u7528\u8fb9\u754c\uff09\u3002\n\n#### weight_order\n\u6307\u5b9a\u662f\u5426\u6309\u76f8\u5173\u6027\uff08\u6743\u91cd\u9012\u51cf\uff09\u6392\u5e8f\u63d0\u53d6\u7684\u7247\u6bb5\uff0c\u6216\u8005\u6309\u5728\u6587\u6863\u4e2d\u51fa\u73b0\u7684\u987a\u5e8f\uff08\u4f4d\u7f6e\u9012\u589e\uff09\u6392\u5e8f\u3002\u9ed8\u8ba4\u503c\u662f 0\uff08\u4e0d\u4f7f\u7528\u6743\u91cd\u6392\u5e8f\uff09\u3002\n\n#### force_all_words\n\u5ffd\u7565\u957f\u5ea6\u9650\u5236\uff0c\u76f4\u5230\u7ed3\u679c\u5305\u542b\u6240\u6709\u5173\u952e\u8bcd\u3002\u9ed8\u8ba4\u503c\u662f 0\uff08\u4e0d\u5f3a\u5236\u5305\u542b\u6240\u6709\u5173\u952e\u8bcd\uff09\u3002\n\n#### start_snippet_id\n\u8bbe\u7f6e `%SNIPPET_ID%` \u5b8f\u7684\u8d77\u59cb\u503c\uff08\u8be5\u5b8f\u4f1a\u5728 `before_match`\u3001`after_match` \u5b57\u7b26\u4e32\u4e2d\u88ab\u68c0\u6d4b\u5e76\u5c55\u5f00\uff09\u3002\u9ed8\u8ba4\u503c\u662f 1\u3002",
  46. "russian": "# \u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430\n\n<!-- example highlighting -->\n\n\u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0430 (\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430\u043c\u0438) \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430.\n\n\u0424\u0443\u043d\u043a\u0446\u0438\u044f SQL `HIGHLIGHT()`, \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e `\"highlight\"` \u0432 JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 HTTP \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f `highlight()` \u0432 PHP-\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044f (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_0\n\n<!-- response SQL -->\n\nCODE_BLOCK_1\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_2\n\n<!-- response JSON -->\n\nCODE_BLOCK_3\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_4\n\n<!-- response PHP -->\nCODE_BLOCK_5\n\n<!-- request Python -->\nCODE_BLOCK_6\n<!-- response Python -->\nCODE_BLOCK_7\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_8\n<!-- response Python-asyncio -->\nCODE_BLOCK_9\n\n<!-- request Javascript -->\nCODE_BLOCK_10\n<!-- response Javascript -->\nCODE_BLOCK_11\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_12\n\n<!-- response Java -->\nCODE_BLOCK_13\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_14\n\n<!-- response C# -->\nCODE_BLOCK_15\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\nCODE_BLOCK_16\n\n<!-- response Rust -->\nCODE_BLOCK_17\n\n<!-- request TypeScript -->\nCODE_BLOCK_18\n<!-- response TypeScript -->\nCODE_BLOCK_19\n\n<!-- request Go -->\nCODE_BLOCK_20\n<!-- response Go -->\nCODE_BLOCK_21\n\n<!-- end -->\n\n\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 SQL \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u0438\u0437 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 MySQL. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0446\u0438\u0439 `field_separator` \u0438 `snippet_separator`, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0438\u0436\u0435.\n\n\u041f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 HTTP \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 PHP-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0442\u0430\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0435\u0442, \u0438 \u043d\u0430\u0431\u043e\u0440 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u043b\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 (\u0431\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u0439).\n\n\u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a `limit`, `limit_words` \u0438 `limit_snippets`, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0446\u0438\u0438 `limits_per_field`, \u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430, \u043d\u043e \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u043d\u0430\u0431\u0440\u0430\u043b\u0438 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u043e \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430\u043c\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0434\u0432\u0438\u0436\u043a\u0435 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438.\n\n\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043b\u0443\u0447\u0448\u0438\u043c \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430\u043c (\u0441 \u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043a\u0438\u043c\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u0444\u0440\u0430\u0437), \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430\u043c \u0441 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043e\u043d \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u043b\u0438\u043c\u0438\u0442\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u043e\u043b\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u043d\u0430\u0447\u0430\u043b\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043b\u0438\u043c\u0438\u0442\u0430\u043c\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0427\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043e\u043f\u0446\u0438\u044e `allow_empty` \u0432 1.\n\n\u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u043c \u044d\u0442\u0430\u043f\u0435 `post limit`, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u043d\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0443\u0437\u044b LIMIT. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043a\u043b\u0430\u0443\u0437\u043e\u0439 LIMIT 20,10 \u0444\u0443\u043d\u043a\u0446\u0438\u044f `HIGHLIGHT()` \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 10 \u0440\u0430\u0437.\n\n## \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438\n\n<!-- example highlighting options -->\n\n\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u043d\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432. \u041e\u043d\u0438 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f SQL, HTTP \u0438 PHP \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.\n\n#### before_match\n\u0421\u0442\u0440\u043e\u043a\u0430, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441 `%SNIPPET_ID%`. \u041f\u0435\u0440\u0432\u043e\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430. \u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 1 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043e\u043f\u0446\u0438\u0435\u0439 `start_snippet_id`. `%SNIPPET_ID%` \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 `<b>`.\n\n#### after_match\n\u0421\u0442\u0440\u043e\u043a\u0430, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0430\u044f \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 `</b>`.\n\n#### limit\n\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445 (\u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u043a\u0430\u0445). \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 256. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0441\u043c. `limits_per_field`.\n\n#### limit_words\n\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u043c, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0441\u043e\u0432\u043f\u0430\u0432\u0448\u0438\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u0430\u043c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f `Mary` \u0438 \u0432\u044b\u0431\u0440\u0430\u043d \u0441\u043d\u0438\u043f\u043f\u0435\u0442 `Mary had a little lamb`, \u0442\u043e \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 5 \u0441\u043b\u043e\u0432 \u0432 \u044d\u0442\u043e\u0442 \u043b\u0438\u043c\u0438\u0442, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e 1. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439). \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0441\u043c. `limits_per_field`.\n\n#### limit_snippets\n\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439). \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0441\u043c. `limits_per_field`.\n\n#### limits_per_field\n\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043b\u0438 `limit`, `limit_words` \u0438 `limit_snippets` \u043a\u0430\u043a \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u043b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u043b\u0438 \u043a\u0430\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0435\u0441\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u0432 0 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043b\u0438\u043c\u0438\u0442\u044b. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u044d\u0442\u043e\u0433\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c, \u0435\u0441\u043b\u0438 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e \u043e\u043d\u0438 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u0435\u0435. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 1 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u043c\u0438\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u0435).\n#### around\n\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0445 \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0441 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 5.\n\n#### use_boundaries\n\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0444\u0440\u0430\u0437, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b [phrase_boundary](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#phrase_boundary). \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b).\n\n#### weight_order\n\u0417\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u0451\u043d\u043d\u044b\u0445 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432: \u043f\u043e \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u0438 (\u0443\u0431\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0441\u0430) \u0438\u043b\u0438 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 (\u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438). \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u043e \u0432\u0435\u0441\u0443).\n\n#### force_all_words\n\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u043b\u0438\u043c\u0438\u0442 \u0434\u043b\u0438\u043d\u044b \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u0441\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430).\n\n#### start_snippet_id\n\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 `%SNIPPET_ID%` (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 `before_match`, `after_match`). \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 1."
  47. },
  48. "is_code_or_comment": false,
  49. "model": "openai:gpt-4.1-mini",
  50. "updated_at": 1766339812
  51. },
  52. "0c96da5c1eed2322ff830c34eebcbd6e3b79ec999b726fc28268872bb04dd473": {
  53. "original": "<!-- response PHP -->\nCODE_BLOCK_62\n<!-- request Python -->\nCODE_BLOCK_63\n<!-- response Python -->\nCODE_BLOCK_64\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_65\n<!-- response Python-asyncio -->\nCODE_BLOCK_66\n\n<!-- request Javascript -->\nCODE_BLOCK_67\n<!-- response Javascript -->\nCODE_BLOCK_68\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_69\n\n<!-- response Java -->\nCODE_BLOCK_70\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_71\n\n<!-- response C# -->\nCODE_BLOCK_72\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_73\n\n<!-- response Rust -->\nCODE_BLOCK_74\n\n<!-- request TypeScript -->\nCODE_BLOCK_75\n<!-- response TypeScript -->\nCODE_BLOCK_76\n\n<!-- request Go -->\nCODE_BLOCK_77\n<!-- response Go -->\nCODE_BLOCK_78\n\n<!-- end -->\n\n<!-- example highlight JSON all field -->\n\nTo highlight all possible fields, pass an empty object as the `highlight` property.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_79\n\n<!-- response JSON -->\n\nCODE_BLOCK_80\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_81\n\n<!-- response PHP -->\nCODE_BLOCK_82\n<!-- request Python -->\nCODE_BLOCK_83\n<!-- response Python -->\nCODE_BLOCK_84\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_85\n<!-- response Python-asyncio -->\nCODE_BLOCK_86\n\n<!-- request Javascript -->\nCODE_BLOCK_87\n<!-- response Javascript -->\nCODE_BLOCK_88\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_89\n\n<!-- response Java -->\nCODE_BLOCK_90\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_91\n\n<!-- response C# -->\nCODE_BLOCK_92\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_93\n\n<!-- response Rust -->\nCODE_BLOCK_94\n\n<!-- request TypeScript -->\nCODE_BLOCK_95\n<!-- response TypeScript -->\nCODE_BLOCK_96\n\n<!-- request Go -->\nCODE_BLOCK_97\n<!-- response Go -->\nCODE_BLOCK_98\n\n<!-- end -->\n\nIn addition to common highlighting options, several synonyms are available for JSON queries via HTTP:\n\n#### fields\nThe `fields` object contains attribute names with options. It can also be an array of field names (without any options).\n\nNote that by default, highlighting attempts to highlight the results following the full-text query. In a general case, when you don't specify fields to highlight, the highlight is based on your full-text query. However, if you specify fields to highlight, it highlights only if the full-text query matches the selected fields.\n\n#### encoder\nThe `encoder` can be set to `default` or `html`. When set to `html`, it retains HTML markup when highlighting. This works similarly to the `html_strip_mode=retain` option.\n\n<!-- example highlight_query -->\n#### highlight_query\nThe `highlight_query` option allows you to highlight against a query other than your search query. The syntax is the same as in the main `query`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_99\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_100\n\n<!-- request Python -->\nCODE_BLOCK_101\n<!-- response Python -->\nCODE_BLOCK_102\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_103\n<!-- response Python-asyncio -->\nCODE_BLOCK_104\n\n<!-- request Javascript -->\nCODE_BLOCK_105\n<!-- response Javascript -->\nCODE_BLOCK_106\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_107\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_108\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_109\n\n<!-- request TypeScript -->\nCODE_BLOCK_110\n<!-- response TypeScript -->\nCODE_BLOCK_111\n\n<!-- request Go -->\nCODE_BLOCK_112\n<!-- response Go -->\nCODE_BLOCK_113\n\n<!-- end -->\n\n<!-- example pre_tags -->\n\n#### pre_tags and post_tags\n`pre_tags` and `post_tags` set the opening and closing tags for highlighted text snippets. They function similarly to the `before_match` and `after_match` options. These are optional, with default values of `<b>` and `</b>`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_114\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_115\n<!-- response PHP -->\nCODE_BLOCK_116\n<!-- request Python -->\nCODE_BLOCK_117\n<!-- response Python -->\nCODE_BLOCK_118\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_119\n<!-- response Python-asyncio -->\nCODE_BLOCK_120\n\n<!-- request Javascript -->\nCODE_BLOCK_121\n<!-- response Javascript -->\nCODE_BLOCK_122\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_123\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_124\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_125\n\n<!-- request TypeScript -->\nCODE_BLOCK_126\n<!-- response TypeScript -->\nCODE_BLOCK_127\n\n<!-- request Go -->\nCODE_BLOCK_128\n<!-- response Go -->\nCODE_BLOCK_129\n\n<!-- end -->\n\n<!-- example no_match_size -->\n#### no_match_size\n`no_match_size` functions similarly to the `allow_empty` option. If set to 0, it acts as `allow_empty=1`, allowing an empty string to be returned as a highlighting result when a snippet could not be generated. Otherwise, the beginning of the field will be returned. This is optional, with a default value of 1.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_130\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_131\n<!-- response PHP -->\nCODE_BLOCK_132\n<!-- request Python -->\nCODE_BLOCK_133\n<!-- response Python -->\nCODE_BLOCK_134\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_135\n<!-- response Python-asyncio -->\nCODE_BLOCK_136\n\n<!-- request Javascript -->\nCODE_BLOCK_137\n<!-- response Javascript -->\nCODE_BLOCK_138\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_139\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_140\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_141\n\n<!-- request TypeScript -->\nCODE_BLOCK_142\n<!-- response TypeScript -->\nCODE_BLOCK_143\n\n<!-- request Go -->\nCODE_BLOCK_144\n<!-- response Go -->\nCODE_BLOCK_145\n\n<!-- end -->\n\n<!-- example order -->\n#### order\n`order` sets the sorting order of extracted snippets. If set to `\"score\"`, it sorts the extracted snippets in order of relevance. This is optional and works similarly to the `weight_order` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_146\n\n<!-- request PHP -->",
  54. "translations": {
  55. "chinese": "<!-- response PHP -->\nCODE_BLOCK_62\n<!-- request Python -->\nCODE_BLOCK_63\n<!-- response Python -->\nCODE_BLOCK_64\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_65\n<!-- response Python-asyncio -->\nCODE_BLOCK_66\n\n<!-- request Javascript -->\nCODE_BLOCK_67\n<!-- response Javascript -->\nCODE_BLOCK_68\n\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_69\n\n<!-- response Java -->\nCODE_BLOCK_70\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_71\n\n<!-- response C# -->\nCODE_BLOCK_72\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_73\n\n<!-- response Rust -->\nCODE_BLOCK_74\n\n<!-- request TypeScript -->\nCODE_BLOCK_75\n<!-- response TypeScript -->\nCODE_BLOCK_76\n\n<!-- request Go -->\nCODE_BLOCK_77\n<!-- response Go -->\nCODE_BLOCK_78\n\n<!-- end -->\n\n<!-- example highlight JSON all field -->\n\n\u4e3a\u4e86\u9ad8\u4eae\u6240\u6709\u53ef\u80fd\u7684\u5b57\u6bb5\uff0c\u8bf7\u5c06\u7a7a\u5bf9\u8c61\u4f5c\u4e3a `highlight` \u5c5e\u6027\u4f20\u9012\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_79\n\n<!-- response JSON -->\n\nCODE_BLOCK_80\n<!-- intro -->\n##### PHP\uff1a\n\n<!-- request PHP -->\n\nCODE_BLOCK_81\n\n<!-- response PHP -->\nCODE_BLOCK_82\n<!-- request Python -->\nCODE_BLOCK_83\n<!-- response Python -->\nCODE_BLOCK_84\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_85\n<!-- response Python-asyncio -->\nCODE_BLOCK_86\n\n<!-- request Javascript -->\nCODE_BLOCK_87\n<!-- response Javascript -->\nCODE_BLOCK_88\n\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_89\n\n<!-- response Java -->\nCODE_BLOCK_90\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_91\n\n<!-- response C# -->\nCODE_BLOCK_92\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_93\n\n<!-- response Rust -->\nCODE_BLOCK_94\n\n<!-- request TypeScript -->\nCODE_BLOCK_95\n<!-- response TypeScript -->\nCODE_BLOCK_96\n\n<!-- request Go -->\nCODE_BLOCK_97\n<!-- response Go -->\nCODE_BLOCK_98\n\n<!-- end -->\n\n\u9664\u4e86\u5e38\u89c1\u7684\u9ad8\u4eae\u9009\u9879\u5916\uff0c\u8fd8\u53ef\u4ee5\u901a\u8fc7 HTTP \u67e5\u8be2 JSON \u67e5\u8be2\u65f6\u4f7f\u7528\u4e00\u4e9b\u540c\u4e49\u8bcd\uff1a\n\n#### fields\n`fields` \u5bf9\u8c61\u5305\u542b\u5c5e\u6027\u540d\u79f0\u53ca\u5176\u9009\u9879\u3002\u5b83\u4e5f\u53ef\u4ee5\u662f\u4e00\u4e2a\u5b57\u6bb5\u540d\u79f0\u7684\u6570\u7ec4\uff08\u6ca1\u6709\u9009\u9879\uff09\u3002\n\n\u8bf7\u6ce8\u610f\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u9ad8\u4eae\u5c1d\u8bd5\u6839\u636e\u5168\u6587\u67e5\u8be2\u9ad8\u4eae\u7ed3\u679c\u3002\u5728\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u5982\u679c\u4e0d\u6307\u5b9a\u8981\u9ad8\u4eae\u7684\u5b57\u6bb5\uff0c\u5219\u9ad8\u4eae\u57fa\u4e8e\u60a8\u7684\u5168\u6587\u67e5\u8be2\u3002\u4f46\u662f\uff0c\u5982\u679c\u60a8\u6307\u5b9a\u4e86\u8981\u9ad8\u4eae\u7684\u5b57\u6bb5\uff0c\u5219\u4ec5\u5728\u5168\u6587\u67e5\u8be2\u5339\u914d\u9009\u5b9a\u5b57\u6bb5\u65f6\u8fdb\u884c\u9ad8\u4eae\u3002\n\n#### encoder\n`encoder` \u53ef\u4ee5\u8bbe\u7f6e\u4e3a `default` \u6216 `html`\u3002\u8bbe\u7f6e\u4e3a `html` \u65f6\uff0c\u9ad8\u4eae\u65f6\u4fdd\u7559 HTML \u6807\u8bb0\u3002\u8fd9\u7c7b\u4f3c\u4e8e `html_strip_mode=retain` \u9009\u9879\u3002\n\n<!-- example highlight_query -->\n#### highlight_query\n`highlight_query` \u9009\u9879\u5141\u8bb8\u60a8\u4f7f\u7528\u9664\u641c\u7d22\u67e5\u8be2\u4e4b\u5916\u7684\u67e5\u8be2\u8fdb\u884c\u9ad8\u4eae\u3002\u8bed\u6cd5\u4e0e\u4e3b `query` \u8bed\u6cd5\u76f8\u540c\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_99\n<!-- intro -->\n##### PHP\uff1a\n\n<!-- request PHP -->\n\nCODE_BLOCK_100\n\n<!-- request Python -->\nCODE_BLOCK_101\n<!-- response Python -->\nCODE_BLOCK_102\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_103\n<!-- response Python-asyncio -->\nCODE_BLOCK_104\n\n<!-- request Javascript -->\nCODE_BLOCK_105\n<!-- response Javascript -->\nCODE_BLOCK_106\n\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_107\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_108\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_109\n\n<!-- request TypeScript -->\nCODE_BLOCK_110\n<!-- response TypeScript -->\nCODE_BLOCK_111\n\n<!-- request Go -->\nCODE_BLOCK_112\n<!-- response Go -->\nCODE_BLOCK_113\n\n<!-- end -->\n\n<!-- example pre_tags -->\n\n#### pre_tags \u548c post_tags\n`pre_tags` \u548c `post_tags` \u8bbe\u7f6e\u9ad8\u4eae\u6587\u672c\u7247\u6bb5\u7684\u5f00\u95ed\u6807\u7b7e\u3002\u5b83\u4eec\u7684\u529f\u80fd\u7c7b\u4f3c\u4e8e `before_match` \u548c `after_match` \u9009\u9879\u3002\u8fd9\u4e9b\u662f\u53ef\u9009\u7684\uff0c\u9ed8\u8ba4\u503c\u4e3a `<b>` \u548c `</b>`\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_114\n<!-- intro -->\n##### PHP\uff1a\n\n<!-- request PHP -->\n\nCODE_BLOCK_115\n<!-- response PHP -->\nCODE_BLOCK_116\n<!-- request Python -->\nCODE_BLOCK_117\n<!-- response Python -->\nCODE_BLOCK_118\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_119\n<!-- response Python-asyncio -->\nCODE_BLOCK_120\n\n<!-- request Javascript -->\nCODE_BLOCK_121\n<!-- response Javascript -->\nCODE_BLOCK_122\n\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_123\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_124\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_125\n\n<!-- request TypeScript -->\nCODE_BLOCK_126\n<!-- response TypeScript -->\nCODE_BLOCK_127\n\n<!-- request Go -->\nCODE_BLOCK_128\n<!-- response Go -->\nCODE_BLOCK_129\n\n<!-- end -->\n\n<!-- example no_match_size -->\n#### no_match_size\n`no_match_size` \u4e0e `allow_empty` \u9009\u9879\u7c7b\u4f3c\u3002\u5982\u679c\u8bbe\u7f6e\u4e3a 0\uff0c\u5219\u4f5c\u4e3a\u9ad8\u4eae\u7ed3\u679c\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\uff0c\u5f53\u65e0\u6cd5\u751f\u6210\u7247\u6bb5\u65f6\u3002\u5426\u5219\uff0c\u8fd4\u56de\u5b57\u6bb5\u7684\u5f00\u5934\u3002\u8fd9\u662f\u53ef\u9009\u7684\uff0c\u9ed8\u8ba4\u503c\u4e3a 1\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_130\n<!-- intro -->\n##### PHP\uff1a\n\n<!-- request PHP -->\n\nCODE_BLOCK_131\n<!-- response PHP -->\nCODE_BLOCK_132\n<!-- request Python -->\nCODE_BLOCK_133\n<!-- response Python -->\nCODE_BLOCK_134\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_135\n<!-- response Python-asyncio -->\nCODE_BLOCK_136\n\n<!-- request Javascript -->\nCODE_BLOCK_137\n<!-- response Javascript -->\nCODE_BLOCK_138\n\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_139\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_140\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_141\n\n<!-- request TypeScript -->\nCODE_BLOCK_142\n<!-- response TypeScript -->\nCODE_BLOCK_143\n\n<!-- request Go -->\nCODE_BLOCK_144\n<!-- response Go -->\nCODE_BLOCK_145\n\n<!-- end -->\n\n<!-- example order -->\n#### order\n`order` \u8bbe\u7f6e\u63d0\u53d6\u7247\u6bb5\u7684\u6392\u5e8f\u987a\u5e8f\u3002\u5982\u679c\u8bbe\u7f6e\u4e3a `\"score\"`\uff0c\u5219\u6309\u76f8\u5173\u6027\u987a\u5e8f\u6392\u5e8f\u63d0\u53d6\u7684\u7247\u6bb5\u3002\u8fd9\u662f\u53ef\u9009\u7684\uff0c\u7c7b\u4f3c\u4e8e `weight_order` \u9009\u9879\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_146\n\n<!-- request PHP -->",
  56. "russian": "<!-- response PHP -->\nCODE_BLOCK_62\n<!-- request Python -->\nCODE_BLOCK_63\n<!-- response Python -->\nCODE_BLOCK_64\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_65\n<!-- response Python-asyncio -->\nCODE_BLOCK_66\n\n<!-- request Javascript -->\nCODE_BLOCK_67\n<!-- response Javascript -->\nCODE_BLOCK_68\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_69\n\n<!-- response Java -->\nCODE_BLOCK_70\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_71\n\n<!-- response C# -->\nCODE_BLOCK_72\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_73\n\n<!-- response Rust -->\nCODE_BLOCK_74\n\n<!-- request TypeScript -->\nCODE_BLOCK_75\n<!-- response TypeScript -->\nCODE_BLOCK_76\n\n<!-- request Go -->\nCODE_BLOCK_77\n<!-- response Go -->\nCODE_BLOCK_78\n\n<!-- end -->\n\n<!-- example highlight JSON all field -->\n\n\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 `highlight`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_79\n\n<!-- response JSON -->\n\nCODE_BLOCK_80\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_81\n\n<!-- response PHP -->\nCODE_BLOCK_82\n<!-- request Python -->\nCODE_BLOCK_83\n<!-- response Python -->\nCODE_BLOCK_84\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_85\n<!-- response Python-asyncio -->\nCODE_BLOCK_86\n\n<!-- request Javascript -->\nCODE_BLOCK_87\n<!-- response Javascript -->\nCODE_BLOCK_88\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_89\n\n<!-- response Java -->\nCODE_BLOCK_90\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_91\n\n<!-- response C# -->\nCODE_BLOCK_92\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_93\n\n<!-- response Rust -->\nCODE_BLOCK_94\n\n<!-- request TypeScript -->\nCODE_BLOCK_95\n<!-- response TypeScript -->\nCODE_BLOCK_96\n\n<!-- request Go -->\nCODE_BLOCK_97\n<!-- response Go -->\nCODE_BLOCK_98\n\n<!-- end -->\n\n\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043e\u0431\u0449\u0438\u043c \u043e\u043f\u0446\u0438\u044f\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u0434\u043b\u044f JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 HTTP \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u043e\u043d\u0438\u043c\u043e\u0432:\n\n#### fields\n\u041e\u0431\u044a\u0435\u043a\u0442 `fields` \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043c\u0435\u043d\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441 \u043e\u043f\u0446\u0438\u044f\u043c\u0438. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0438\u043c\u0435\u043d \u043f\u043e\u043b\u0435\u0439 (\u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043e\u043f\u0446\u0438\u0439).\n\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044f\u043c.\n\n#### encoder\n\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 `encoder` \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 `default` \u0438\u043b\u0438 `html`. \u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432 `html`, \u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u043f\u0440\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0438. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `html_strip_mode=retain`.\n\n<!-- example highlight_query -->\n#### highlight_query\n\u041e\u043f\u0446\u0438\u044f `highlight_query` \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c `query`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_99\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_100\n\n<!-- request Python -->\nCODE_BLOCK_101\n<!-- response Python -->\nCODE_BLOCK_102\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_103\n<!-- response Python-asyncio -->\nCODE_BLOCK_104\n\n<!-- request Javascript -->\nCODE_BLOCK_105\n<!-- response Javascript -->\nCODE_BLOCK_106\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_107\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_108\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_109\n\n<!-- request TypeScript -->\nCODE_BLOCK_110\n<!-- response TypeScript -->\nCODE_BLOCK_111\n\n<!-- request Go -->\nCODE_BLOCK_112\n<!-- response Go -->\nCODE_BLOCK_113\n\n<!-- end -->\n\n<!-- example pre_tags -->\n\n#### pre_tags \u0438 post_tags\n`pre_tags` \u0438 `post_tags` \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u0433\u0438 \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430. \u041e\u043d\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u044f\u043c `before_match` \u0438 `after_match`. \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 `<b>` \u0438 `</b>`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_114\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_115\n<!-- response PHP -->\nCODE_BLOCK_116\n<!-- request Python -->\nCODE_BLOCK_117\n<!-- response Python -->\nCODE_BLOCK_118\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_119\n<!-- response Python-asyncio -->\nCODE_BLOCK_120\n\n<!-- request Javascript -->\nCODE_BLOCK_121\n<!-- response Javascript -->\nCODE_BLOCK_122\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_123\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_124\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_125\n\n<!-- request TypeScript -->\nCODE_BLOCK_126\n<!-- response TypeScript -->\nCODE_BLOCK_127\n\n<!-- request Go -->\nCODE_BLOCK_128\n<!-- response Go -->\nCODE_BLOCK_129\n\n<!-- end -->\n\n<!-- example no_match_size -->\n#### no_match_size\n`no_match_size` \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `allow_empty`. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 0, \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a `allow_empty=1`, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u043b\u044f. \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 1.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_130\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_131\n<!-- response PHP -->\nCODE_BLOCK_132\n<!-- request Python -->\nCODE_BLOCK_133\n<!-- response Python -->\nCODE_BLOCK_134\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_135\n<!-- response Python-asyncio -->\nCODE_BLOCK_136\n\n<!-- request Javascript -->\nCODE_BLOCK_137\n<!-- response Javascript -->\nCODE_BLOCK_138\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_139\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_140\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_141\n\n<!-- request TypeScript -->\nCODE_BLOCK_142\n<!-- response TypeScript -->\nCODE_BLOCK_143\n\n<!-- request Go -->\nCODE_BLOCK_144\n<!-- response Go -->\nCODE_BLOCK_145\n\n<!-- end -->\n\n<!-- example order -->\n#### order\n`order` \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 `\"score\"`, \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `weight_order`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_146\n\n<!-- request PHP -->"
  57. },
  58. "is_code_or_comment": false,
  59. "model": "deepseek/deepseek-v3.2",
  60. "updated_at": 1766374264
  61. },
  62. "148288d2b6c3010f72fae67ed0ee422bee1ed341168ab359fbbabee934b35074": {
  63. "original": "#### html_strip_mode\nDefines the HTML stripping mode setting. Defaults to `index`, meaning that table settings will be used. Other values include `none` and `strip`, which forcibly skip or apply stripping regardless of table settings; and `retain`, which retains HTML markup and protects it from highlighting. The `retain` mode can only be used when highlighting full documents and therefore requires that no snippet size limits are set. The allowed string values are `none`, `strip`, `index`, and `retain`.\n\n#### allow_empty\nPermits an empty string to be returned as the highlighting result when no snippets could be generated in the current field (no keyword match or no snippets fit the limit). By default, the beginning of the original text would be returned instead of an empty string. The default is 0 (don't allow an empty result).\n\n#### snippet_boundary\nEnsures that snippets do not cross a sentence, paragraph, or zone boundary (when used with a table that has the respective indexing settings enabled). The allowed values are `sentence`, `paragraph`, and `zone`.\n\n#### emit_zones\nEmits an HTML tag with the enclosing zone name before each snippet. The default is 0 (don't emit zone names).\n\n#### force_snippets\nDetermines whether to force snippet generation even if limits allow highlighting the entire text. The default is 0 (don't force snippet generation).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_22\n\n<!-- response SQL -->\nCODE_BLOCK_23\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_24\n\n<!-- response JSON -->\n\nCODE_BLOCK_25\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_26\n\n<!-- response PHP -->\nCODE_BLOCK_27\n\n<!-- request Python -->\nCODE_BLOCK_28\n<!-- response Python -->\nCODE_BLOCK_29\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_30\n<!-- response Python-asyncio -->\nCODE_BLOCK_31\n\n<!-- request Javascript -->\nCODE_BLOCK_32\n<!-- response Javascript -->\nCODE_BLOCK_33\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_34\n\n<!-- response Java -->\nCODE_BLOCK_35\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_36\n\n<!-- response C# -->\nCODE_BLOCK_37\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_38\n\n<!-- response Rust -->\nCODE_BLOCK_39\n\n<!-- request TypeScript -->\nCODE_BLOCK_40\n<!-- response TypeScript -->\nCODE_BLOCK_41\n\n<!-- request Go -->\nCODE_BLOCK_42\n<!-- response Go -->\nCODE_BLOCK_43\n\n<!-- end -->\n\n## Highlighting via SQL\n\nThe `HIGHLIGHT()` function can be used to highlight search results. Here's the syntax:\n\nCODE_BLOCK_44\n\n<!-- example highlight() no args -->\nBy default, it works with no arguments.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_45\n\n<!-- response SQL -->\nCODE_BLOCK_46\n\n<!-- end -->\n\n<!-- example highlight() field syntax -->\n\n`HIGHLIGHT()` retrieves all available full-text fields from document storage and highlights them against the provided query. Field syntax in queries is supported. Field text is separated by `field_separator`, which can be modified in the options.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_47\n\n<!-- response SQL -->\nCODE_BLOCK_48\n\n<!-- end -->\n\n<!-- example highlight() options -->\nOptional first argument in `HIGHLIGHT()` is the list of options.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_49\n\n<!-- response SQL -->\nCODE_BLOCK_50\n\n<!-- end -->\n\n<!-- example highlight() field list -->\n\nThe optional second argument is a string containing a single field or a comma-separated list of fields. If this argument is present, only the specified fields will be fetched from document storage and highlighted. An empty string as the second argument signifies \"fetch all available fields.\"\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_51\n\n<!-- response SQL -->\nCODE_BLOCK_52\n\n<!-- end -->\n\n<!-- example highlight() string attr -->\n\nAlternatively, you can use the second argument to specify a string attribute or field name without quotes. In this case, the supplied string will be highlighted against the provided query, but field syntax will be ignored.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_53\n\n<!-- response SQL -->\nCODE_BLOCK_54\n\n<!-- end -->\n\n<!-- example highlight() query -->\n\nThe optional third argument is the query. This is used to highlight search results against a query different from the one used for searching.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_55\n\n<!-- response SQL -->\nCODE_BLOCK_56\n\n<!-- end -->\n\n<!-- example HIGHLIGHT TO_STRING -->\n\nAlthough `HIGHLIGHT()` is designed to work with stored full-text fields and string attributes, it can also be used to highlight arbitrary text. Keep in mind that if the query contains any field search operators (e.g., `@title hello @body world`), the field part of them is ignored in this case.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_57\n\n<!-- response SQL -->\nCODE_BLOCK_58\n\n<!-- end -->\n\nSeveral options are relevant only when generating a single string as a result (not an array of snippets). This applies exclusively to the SQL `HIGHLIGHT()` function:\n\n#### snippet_separator\nA string to insert between snippets. The default is ` ... `.\n#### field_separator\nA string to insert between fields. The default is `|`.\n\nAnother way to highlight text is to use the [CALL SNIPPETS](../Searching/Highlighting.md#CALL-SNIPPETS) statement. This mostly duplicates the `HIGHLIGHT()` functionality but cannot use built-in document storage. However, it can load source text from files.\n\n## Highlighting via HTTP\n\n<!-- example highlight in JSON -->\n\nTo highlight full-text search results in JSON queries via HTTP, field contents must be stored in document storage (enabled by default). In the example, full-text fields `content` and `title` are fetched from document storage and highlighted against the query specified in the `query` clause.\n\nHighlighted snippets are returned in the `highlight` property of the `hits` array.\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_59\n\n<!-- response JSON -->\n\nCODE_BLOCK_60\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_61",
  64. "translations": {
  65. "chinese": "#### html_strip_mode\n\u5b9a\u4e49HTML\u5265\u79bb\u6a21\u5f0f\u8bbe\u7f6e\u3002\u9ed8\u8ba4\u4e3a`index`\uff0c\u8868\u793a\u5c06\u4f7f\u7528\u8868\u8bbe\u7f6e\u3002\u5176\u4ed6\u503c\u5305\u62ec`none`\u548c`strip`\uff0c\u5b83\u4eec\u4f1a\u5f3a\u5236\u8df3\u8fc7\u6216\u5e94\u7528\u5265\u79bb\uff0c\u65e0\u89c6\u8868\u8bbe\u7f6e\uff1b\u4ee5\u53ca`retain`\uff0c\u5b83\u4f1a\u4fdd\u7559HTML\u6807\u8bb0\u5e76\u4fdd\u62a4\u5176\u4e0d\u88ab\u9ad8\u4eae\u3002`retain`\u6a21\u5f0f\u4ec5\u5728\u9ad8\u4eae\u5b8c\u6574\u6587\u6863\u65f6\u53ef\u7528\uff0c\u56e0\u6b64\u8981\u6c42\u4e0d\u8bbe\u7f6e\u4efb\u4f55\u7247\u6bb5\u5927\u5c0f\u9650\u5236\u3002\u5141\u8bb8\u7684\u5b57\u7b26\u4e32\u503c\u4e3a`none`\u3001`strip`\u3001`index`\u548c`retain`\u3002\n\n#### allow_empty\n\u5f53\u5f53\u524d\u5b57\u6bb5\u65e0\u6cd5\u751f\u6210\u4efb\u4f55\u7247\u6bb5\uff08\u65e0\u5173\u952e\u8bcd\u5339\u914d\u6216\u65e0\u7247\u6bb5\u7b26\u5408\u9650\u5236\uff09\u65f6\uff0c\u5141\u8bb8\u8fd4\u56de\u7a7a\u5b57\u7b26\u4e32\u4f5c\u4e3a\u9ad8\u4eae\u7ed3\u679c\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5c06\u8fd4\u56de\u539f\u59cb\u6587\u672c\u7684\u5f00\u5934\u800c\u4e0d\u662f\u7a7a\u5b57\u7b26\u4e32\u3002\u9ed8\u8ba4\u503c\u4e3a0\uff08\u4e0d\u5141\u8bb8\u7a7a\u7ed3\u679c\uff09\u3002\n\n#### snippet_boundary\n\u786e\u4fdd\u7247\u6bb5\u4e0d\u8de8\u8d8a\u53e5\u5b50\u3001\u6bb5\u843d\u6216\u533a\u57df\u8fb9\u754c\uff08\u5f53\u4e0e\u542f\u7528\u4e86\u76f8\u5e94\u7d22\u5f15\u8bbe\u7f6e\u7684\u8868\u4e00\u8d77\u4f7f\u7528\u65f6\uff09\u3002\u5141\u8bb8\u7684\u503c\u4e3a`sentence`\u3001`paragraph`\u548c`zone`\u3002\n\n#### emit_zones\n\u5728\u6bcf\u4e2a\u7247\u6bb5\u524d\u8f93\u51fa\u4e00\u4e2a\u5305\u542b\u5305\u56f4\u533a\u57df\u540d\u79f0\u7684HTML\u6807\u7b7e\u3002\u9ed8\u8ba4\u503c\u4e3a0\uff08\u4e0d\u8f93\u51fa\u533a\u57df\u540d\u79f0\uff09\u3002\n\n#### force_snippets\n\u51b3\u5b9a\u5373\u4f7f\u9650\u5236\u5141\u8bb8\u9ad8\u4eae\u6574\u4e2a\u6587\u672c\u65f6\uff0c\u662f\u5426\u5f3a\u5236\u751f\u6210\u7247\u6bb5\u3002\u9ed8\u8ba4\u503c\u4e3a0\uff08\u4e0d\u5f3a\u5236\u751f\u6210\u7247\u6bb5\uff09\u3002\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_22\n\n<!-- response SQL -->\nCODE_BLOCK_23\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_24\n\n<!-- response JSON -->\n\nCODE_BLOCK_25\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_26\n\n<!-- response PHP -->\nCODE_BLOCK_27\n\n<!-- request Python -->\nCODE_BLOCK_28\n<!-- response Python -->\nCODE_BLOCK_29\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_30\n<!-- response Python-asyncio -->\nCODE_BLOCK_31\n\n<!-- request Javascript -->\nCODE_BLOCK_32\n<!-- response Javascript -->\nCODE_BLOCK_33\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_34\n\n<!-- response Java -->\nCODE_BLOCK_35\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_36\n\n<!-- response C# -->\nCODE_BLOCK_37\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_38\n\n<!-- response Rust -->\nCODE_BLOCK_39\n\n<!-- request TypeScript -->\nCODE_BLOCK_40\n<!-- response TypeScript -->\nCODE_BLOCK_41\n\n<!-- request Go -->\nCODE_BLOCK_42\n<!-- response Go -->\nCODE_BLOCK_43\n\n<!-- end -->\n\n## \u901a\u8fc7SQL\u8fdb\u884c\u9ad8\u4eae\n\n`HIGHLIGHT()`\u51fd\u6570\u53ef\u7528\u4e8e\u9ad8\u4eae\u641c\u7d22\u7ed3\u679c\u3002\u8bed\u6cd5\u5982\u4e0b\uff1a\n\nCODE_BLOCK_44\n\n<!-- example highlight() no args -->\n\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5b83\u65e0\u9700\u53c2\u6570\u5373\u53ef\u5de5\u4f5c\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_45\n\n<!-- response SQL -->\nCODE_BLOCK_46\n\n<!-- end -->\n\n<!-- example highlight() field syntax -->\n\n`HIGHLIGHT()`\u4ece\u6587\u6863\u5b58\u50a8\u4e2d\u68c0\u7d22\u6240\u6709\u53ef\u7528\u7684\u5168\u6587\u5b57\u6bb5\uff0c\u5e76\u6839\u636e\u63d0\u4f9b\u7684\u67e5\u8be2\u5bf9\u5b83\u4eec\u8fdb\u884c\u9ad8\u4eae\u3002\u67e5\u8be2\u4e2d\u7684\u5b57\u6bb5\u8bed\u6cd5\u53d7\u652f\u6301\u3002\u5b57\u6bb5\u6587\u672c\u7531`field_separator`\u5206\u9694\uff0c\u8be5\u5206\u9694\u7b26\u53ef\u5728\u9009\u9879\u4e2d\u4fee\u6539\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_47\n\n<!-- response SQL -->\nCODE_BLOCK_48\n\n<!-- end -->\n\n<!-- example highlight() options -->\n`HIGHLIGHT()`\u4e2d\u7684\u53ef\u9009\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u9009\u9879\u5217\u8868\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_49\n\n<!-- response SQL -->\nCODE_BLOCK_50\n\n<!-- end -->\n\n<!-- example highlight() field list -->\n\n\u53ef\u9009\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u4e00\u4e2a\u5305\u542b\u5355\u4e2a\u5b57\u6bb5\u6216\u9017\u53f7\u5206\u9694\u5b57\u6bb5\u5217\u8868\u7684\u5b57\u7b26\u4e32\u3002\u5982\u679c\u5b58\u5728\u6b64\u53c2\u6570\uff0c\u5219\u4ec5\u4ece\u6587\u6863\u5b58\u50a8\u4e2d\u83b7\u53d6\u5e76\u9ad8\u4eae\u6307\u5b9a\u7684\u5b57\u6bb5\u3002\u7a7a\u5b57\u7b26\u4e32\u4f5c\u4e3a\u7b2c\u4e8c\u4e2a\u53c2\u6570\u8868\u793a\u201c\u83b7\u53d6\u6240\u6709\u53ef\u7528\u5b57\u6bb5\u201d\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_51\n\n<!-- response SQL -->\nCODE_BLOCK_52\n\n<!-- end -->\n\n<!-- example highlight() string attr -->\n\n\u6216\u8005\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u7b2c\u4e8c\u4e2a\u53c2\u6570\u6307\u5b9a\u4e0d\u5e26\u5f15\u53f7\u7684\u5b57\u7b26\u4e32\u5c5e\u6027\u6216\u5b57\u6bb5\u540d\u79f0\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u63d0\u4f9b\u7684\u5b57\u7b26\u4e32\u5c06\u6839\u636e\u7ed9\u5b9a\u7684\u67e5\u8be2\u8fdb\u884c\u9ad8\u4eae\uff0c\u4f46\u5b57\u6bb5\u8bed\u6cd5\u5c06\u88ab\u5ffd\u7565\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_53\n\n<!-- response SQL -->\nCODE_BLOCK_54\n\n<!-- end -->\n\n<!-- example highlight() query -->\n\n\u53ef\u9009\u7684\u7b2c\u4e09\u4e2a\u53c2\u6570\u662f\u67e5\u8be2\u3002\u8fd9\u7528\u4e8e\u6839\u636e\u4e0e\u641c\u7d22\u6240\u7528\u67e5\u8be2\u4e0d\u540c\u7684\u67e5\u8be2\u6765\u9ad8\u4eae\u641c\u7d22\u7ed3\u679c\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_55\n\n<!-- response SQL -->\nCODE_BLOCK_56\n\n<!-- end -->\n\n<!-- example HIGHLIGHT TO_STRING -->\n\n\u5c3d\u7ba1`HIGHLIGHT()`\u8bbe\u8ba1\u7528\u4e8e\u5904\u7406\u5b58\u50a8\u7684\u5168\u6587\u5b57\u6bb5\u548c\u5b57\u7b26\u4e32\u5c5e\u6027\uff0c\u4f46\u5b83\u4e5f\u53ef\u7528\u4e8e\u9ad8\u4eae\u4efb\u610f\u6587\u672c\u3002\u8bf7\u6ce8\u610f\uff0c\u5982\u679c\u67e5\u8be2\u5305\u542b\u4efb\u4f55\u5b57\u6bb5\u641c\u7d22\u8fd0\u7b97\u7b26\uff08\u4f8b\u5982`@title hello @body world`\uff09\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5176\u5b57\u6bb5\u90e8\u5206\u5c06\u88ab\u5ffd\u7565\u3002\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_57\n\n<!-- response SQL -->\nCODE_BLOCK_58\n\n<!-- end -->\n\n\u6709\u51e0\u4e2a\u9009\u9879\u4ec5\u5f53\u751f\u6210\u5355\u4e2a\u5b57\u7b26\u4e32\u4f5c\u4e3a\u7ed3\u679c\uff08\u800c\u4e0d\u662f\u7247\u6bb5\u6570\u7ec4\uff09\u65f6\u624d\u76f8\u5173\u3002\u8fd9\u4ec5\u9002\u7528\u4e8eSQL `HIGHLIGHT()`\u51fd\u6570\uff1a\n\n#### snippet_separator\n\u63d2\u5165\u7247\u6bb5\u4e4b\u95f4\u7684\u5b57\u7b26\u4e32\u3002\u9ed8\u8ba4\u4e3a` ... `\u3002\n#### field_separator\n\u63d2\u5165\u5b57\u6bb5\u4e4b\u95f4\u7684\u5b57\u7b26\u4e32\u3002\u9ed8\u8ba4\u4e3a`|`\u3002\n\n\u53e6\u4e00\u79cd\u9ad8\u4eae\u6587\u672c\u7684\u65b9\u6cd5\u662f\u4f7f\u7528[CALL SNIPPETS](../Searching/Highlighting.md#CALL-SNIPPETS)\u8bed\u53e5\u3002\u8fd9\u57fa\u672c\u4e0a\u590d\u5236\u4e86`HIGHLIGHT()`\u7684\u529f\u80fd\uff0c\u4f46\u65e0\u6cd5\u4f7f\u7528\u5185\u7f6e\u6587\u6863\u5b58\u50a8\u3002\u4e0d\u8fc7\uff0c\u5b83\u53ef\u4ee5\u4ece\u6587\u4ef6\u52a0\u8f7d\u6e90\u6587\u672c\u3002\n\n## \u901a\u8fc7HTTP\u8fdb\u884c\u9ad8\u4eae\n\n<!-- example highlight in JSON -->\n\n\u8981\u901a\u8fc7HTTP\u5728JSON\u67e5\u8be2\u4e2d\u9ad8\u4eae\u5168\u6587\u641c\u7d22\u7ed3\u679c\uff0c\u5b57\u6bb5\u5185\u5bb9\u5fc5\u987b\u5b58\u50a8\u5728\u6587\u6863\u5b58\u50a8\u4e2d\uff08\u9ed8\u8ba4\u542f\u7528\uff09\u3002\u5728\u793a\u4f8b\u4e2d\uff0c\u5168\u6587\u5b57\u6bb5`content`\u548c`title`\u4ece\u6587\u6863\u5b58\u50a8\u4e2d\u83b7\u53d6\uff0c\u5e76\u6839\u636e`query`\u5b50\u53e5\u4e2d\u6307\u5b9a\u7684\u67e5\u8be2\u8fdb\u884c\u9ad8\u4eae\u3002\n\n\u9ad8\u4eae\u7684\u7247\u6bb5\u5728`hits`\u6570\u7ec4\u7684`highlight`\u5c5e\u6027\u4e2d\u8fd4\u56de\u3002\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_59\n\n<!-- response JSON -->\n\nCODE_BLOCK_60\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_61",
  66. "russian": "#### html_strip_mode\n\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e `index`, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0414\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: `none` \u0438 `strip`, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b; \u0438 `retain`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0438 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u0435\u0451 \u043e\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u0420\u0435\u0436\u0438\u043c `retain` \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: `none`, `strip`, `index` \u0438 `retain`.\n\n#### allow_empty\n\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b (\u043d\u0435\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u043d\u0435 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 0 (\u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442).\n\n#### snippet_boundary\n\u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430\u0431\u0437\u0430\u0446\u0430 \u0438\u043b\u0438 \u0437\u043e\u043d\u044b (\u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438). \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: `sentence`, `paragraph` \u0438 `zone`.\n\n#### emit_zones\n\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 HTML-\u0442\u0435\u0433 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u043e\u043d\u044b \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u043c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 0 (\u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u0437\u043e\u043d).\n\n#### force_snippets\n\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 0 (\u043d\u0435 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u0442\u044c \u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_22\n\n<!-- response SQL -->\nCODE_BLOCK_23\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_24\n\n<!-- response JSON -->\n\nCODE_BLOCK_25\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_26\n\n<!-- response PHP -->\nCODE_BLOCK_27\n\n<!-- request Python -->\nCODE_BLOCK_28\n<!-- response Python -->\nCODE_BLOCK_29\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_30\n<!-- response Python-asyncio -->\nCODE_BLOCK_31\n\n<!-- request Javascript -->\nCODE_BLOCK_32\n<!-- response Javascript -->\nCODE_BLOCK_33\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_34\n\n<!-- response Java -->\nCODE_BLOCK_35\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_36\n\n<!-- response C# -->\nCODE_BLOCK_37\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_38\n\n<!-- response Rust -->\nCODE_BLOCK_39\n\n<!-- request TypeScript -->\nCODE_BLOCK_40\n<!-- response TypeScript -->\nCODE_BLOCK_41\n\n<!-- request Go -->\nCODE_BLOCK_42\n<!-- response Go -->\nCODE_BLOCK_43\n\n<!-- end -->\n\n## \u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 SQL\n\n\u0424\u0443\u043d\u043a\u0446\u0438\u044f `HIGHLIGHT()` \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430. \u0412\u043e\u0442 \u0435\u0451 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:\n\nCODE_BLOCK_44\n\n<!-- example highlight() no args -->\n\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_45\n\n<!-- response SQL -->\nCODE_BLOCK_46\n\n<!-- end -->\n\n<!-- example highlight() field syntax -->\n\n`HIGHLIGHT()` \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0445 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445. \u0422\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e `field_separator`, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043e\u043f\u0446\u0438\u044f\u0445.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_47\n\n<!-- response SQL -->\nCODE_BLOCK_48\n\n<!-- end -->\n\n<!-- example highlight() options -->\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432 `HIGHLIGHT()` \u2014 \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0446\u0438\u0439.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_49\n\n<!-- response SQL -->\nCODE_BLOCK_50\n\n<!-- end -->\n\n<!-- example highlight() field list -->\n\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0435 \u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u0435\u0439, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u044b \u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u041f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \"\u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f\".\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_51\n\n<!-- response SQL -->\nCODE_BLOCK_52\n\n<!-- end -->\n\n<!-- example highlight() string attr -->\n\n\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0438\u043b\u0438 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044f \u0431\u0435\u0437 \u043a\u0430\u0432\u044b\u0447\u0435\u043a. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u043d\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_53\n\n<!-- response SQL -->\nCODE_BLOCK_54\n\n<!-- end -->\n\n<!-- example highlight() query -->\n\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0440\u0435\u0442\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c\u0443 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_55\n\n<!-- response SQL -->\nCODE_BLOCK_56\n\n<!-- end -->\n\n<!-- example HIGHLIGHT TO_STRING -->\n\n\u0425\u043e\u0442\u044f `HIGHLIGHT()` \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u043c\u0438 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438, \u0435\u0451 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u043f\u043e\u043b\u044f\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `@title hello @body world`), \u0447\u0430\u0441\u0442\u044c, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0430\u044f\u0441\u044f \u043a \u043f\u043e\u043b\u044e, \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\nCODE_BLOCK_57\n\n<!-- response SQL -->\nCODE_BLOCK_58\n\n<!-- end -->\n\n\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u0430 \u043d\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u043e\u0432). \u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a SQL-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 `HIGHLIGHT()`:\n\n#### snippet_separator\n\u0421\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u0430\u043c\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e ` ... `.\n#### field_separator\n\u0421\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u044f\u043c\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e `|`.\n\n\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 [CALL SNIPPETS](../Searching/Highlighting.md#CALL-SNIPPETS). \u041e\u043d \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c `HIGHLIGHT()`, \u043d\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432.\n\n## \u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 HTTP\n\n<!-- example highlight in JSON -->\n\n\u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0447\u0435\u0440\u0435\u0437 HTTP \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e). \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f `content` \u0438 `title` \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 `query`.\n\n\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 `highlight` \u043c\u0430\u0441\u0441\u0438\u0432\u0430 `hits`.\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\nCODE_BLOCK_59\n\n<!-- response JSON -->\n\nCODE_BLOCK_60\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\nCODE_BLOCK_61"
  67. },
  68. "is_code_or_comment": false,
  69. "model": "deepseek/deepseek-v3.2",
  70. "updated_at": 1766374284
  71. },
  72. "ac422f346933d34bd052349fb426a51f57e0375b3d2f264a1aa443f241fecbb5": {
  73. "original": "CODE_BLOCK_147\n<!-- response PHP -->\nCODE_BLOCK_148\n<!-- request Python -->\nCODE_BLOCK_149\n<!-- response Python -->\nCODE_BLOCK_150\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_151\n<!-- response Python-asyncio -->\nCODE_BLOCK_152\n\n<!-- request Javascript -->\nCODE_BLOCK_153\n<!-- response Javascript -->\nCODE_BLOCK_154\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_155\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_156\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_157\n\n<!-- request TypeScript -->\nCODE_BLOCK_158\n<!-- response TypeScript -->\nCODE_BLOCK_159\n\n<!-- request Go -->\nCODE_BLOCK_160\n<!-- response Go -->\nCODE_BLOCK_161\n\n<!-- end -->\n\n<!-- example fragment_size -->\n#### fragment_size\n`fragment_size` sets the maximum snippet size in symbols. It can be global or per-field. Per-field options override global options. This is optional, with a default value of 256. It works similarly to the `limit` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_162\n<!-- request PHP -->\n\nCODE_BLOCK_163\n<!-- response PHP -->\nCODE_BLOCK_164\n<!-- request Python -->\nCODE_BLOCK_165\n<!-- response Python -->\nCODE_BLOCK_166\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_167\n<!-- response Python-asyncio -->\nCODE_BLOCK_168\n\n<!-- request Javascript -->\nCODE_BLOCK_169\n<!-- response Javascript -->\nCODE_BLOCK_170\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_171\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_172\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_173\n\n<!-- request TypeScript -->\nCODE_BLOCK_174\n<!-- response TypeScript -->\nCODE_BLOCK_175\n\n<!-- request Go -->\nCODE_BLOCK_176\n<!-- response Go -->\nCODE_BLOCK_177\n\n<!-- end -->\n\n<!-- example number_of_fragments -->\n#### number_of_fragments\n`number_of_fragments` limits the maximum number of snippets in the result. Like `fragment_size`, it can be global or per-field. This is optional, with a default value of 0 (no limit). It works similarly to the `limit_snippets` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_178\n<!-- request PHP -->\n\nCODE_BLOCK_179\n<!-- response PHP -->\nCODE_BLOCK_180\n\n<!-- request Python -->\nCODE_BLOCK_181\n<!-- response Python -->\nCODE_BLOCK_182\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_183\n<!-- response Python-asyncio -->\nCODE_BLOCK_184\n\n<!-- request Javascript -->\nCODE_BLOCK_185\n<!-- response Javascript -->\nCODE_BLOCK_186\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_187\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_188\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_189\n\n<!-- request TypeScript -->\nCODE_BLOCK_190\n<!-- response TypeScript -->\nCODE_BLOCK_191\n\n<!-- request Go -->\nCODE_BLOCK_192\n<!-- response Go -->\nCODE_BLOCK_193\n\n<!-- end -->\n\n<!-- example highlight json per-field limits -->\n\n#### limit, limit_words, limit_snippets\nOptions like `limit`, `limit_words`, and `limit_snippets` can be set as global or per-field options. Global options are used as per-field limits unless per-field options override them. In the example, the `title` field is highlighted with default limit settings, while the `content` field uses a different limit.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_194\n<!-- request PHP -->\n\nCODE_BLOCK_195\n<!-- response PHP -->\nCODE_BLOCK_196\n<!-- request Python -->\nCODE_BLOCK_197\n<!-- response Python -->\nCODE_BLOCK_198\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_199\n<!-- response Python-asyncio -->\nCODE_BLOCK_200\n\n<!-- request Javascript -->\nCODE_BLOCK_201\n<!-- response Javascript -->\nCODE_BLOCK_202\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_203\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_204\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_205\n\n<!-- request TypeScript -->\nCODE_BLOCK_206\n<!-- response TypeScript -->\nCODE_BLOCK_207\n\n<!-- request Go -->\nCODE_BLOCK_208\n<!-- response Go -->\nCODE_BLOCK_209\n\n<!-- end -->\n\n<!-- example highlight json global limits -->\n\n#### limits_per_field\nGlobal limits can also be enforced by specifying `limits_per_field=0`. Setting this option means that all combined highlighting results must be within the specified limits. The downside is that you may get several snippets highlighted in one field and none in another if the highlighting engine decides that they are more relevant.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_210\n<!-- request PHP -->\n\nCODE_BLOCK_211\n<!-- response PHP -->\nCODE_BLOCK_212\n<!-- request Python -->\nCODE_BLOCK_213\n<!-- response Python -->\nCODE_BLOCK_214\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_215\n<!-- response Python-asyncio -->\nCODE_BLOCK_216\n\n<!-- request Javascript -->\nCODE_BLOCK_217\n<!-- response Javascript -->\nCODE_BLOCK_218\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_219\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_220\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_221\n\n<!-- request TypeScript -->\nCODE_BLOCK_222\n\n<!-- request Go -->\nCODE_BLOCK_223\n<!-- end -->\n\n## CALL SNIPPETS\n\n<!-- example CALL SNIPPETS -->\n\nThe `CALL SNIPPETS` statement builds a snippet from provided data and query using specified table settings. It can't access built-in document storage, which is why it's recommended to use the [HIGHLIGHT() function](../Searching/Highlighting.md) instead.\n\nThe syntax is:\n\nCODE_BLOCK_224\n\n#### data\n`data` serves as the source from which a snippet is extracted. It can either be a single string or a list of strings enclosed in curly brackets.\n#### table\n`table` refers to the name of the table that provides the text processing settings for snippet generation.\n#### query\n`query` is the full-text query used to build the snippets.\n#### opt_value and opt_name\n`opt_value` and `opt_name` represent the [snippet generation options](../Searching/Highlighting.md).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_225\n<!-- response SQL -->\nCODE_BLOCK_226\n\n<!-- end -->",
  74. "translations": {
  75. "chinese": "CODE_BLOCK_147\n<!-- response PHP -->\nCODE_BLOCK_148\n<!-- request Python -->\nCODE_BLOCK_149\n<!-- response Python -->\nCODE_BLOCK_150\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_151\n<!-- response Python-asyncio -->\nCODE_BLOCK_152\n\n<!-- request Javascript -->\nCODE_BLOCK_153\n<!-- response Javascript -->\nCODE_BLOCK_154\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_155\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_156\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_157\n\n<!-- request TypeScript -->\nCODE_BLOCK_158\n<!-- response TypeScript -->\nCODE_BLOCK_159\n\n<!-- request Go -->\nCODE_BLOCK_160\n<!-- response Go -->\nCODE_BLOCK_161\n\n<!-- end -->\n\n<!-- example fragment_size -->\n#### fragment_size\n`fragment_size` \u8bbe\u7f6e\u7247\u6bb5\u7684\u6700\u5927\u7b26\u53f7\u6570\u3002\u5b83\u53ef\u4ee5\u662f\u5168\u5c40\u7684\u6216\u5b57\u6bb5\u7279\u5b9a\u7684\u3002\u5b57\u6bb5\u7279\u5b9a\u9009\u9879\u4f1a\u8986\u76d6\u5168\u5c40\u9009\u9879\u3002\u8fd9\u662f\u53ef\u9009\u7684\uff0c\u9ed8\u8ba4\u503c\u4e3a 256\u3002\u5b83\u7c7b\u4f3c\u4e8e `limit` \u9009\u9879\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_162\n<!-- request PHP -->\n\nCODE_BLOCK_163\n<!-- response PHP -->\nCODE_BLOCK_164\n<!-- request Python -->\nCODE_BLOCK_165\n<!-- response Python -->\nCODE_BLOCK_166\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_167\n<!-- response Python-asyncio -->\nCODE_BLOCK_168\n\n<!-- request Javascript -->\nCODE_BLOCK_169\n<!-- response Javascript -->\nCODE_BLOCK_170\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_171\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_172\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_173\n\n<!-- request TypeScript -->\nCODE_BLOCK_174\n<!-- response TypeScript -->\nCODE_BLOCK_175\n\n<!-- request Go -->\nCODE_BLOCK_176\n<!-- response Go -->\nCODE_BLOCK_177\n\n<!-- end -->\n\n<!-- example number_of_fragments -->\n#### number_of_fragments\n`number_of_fragments` \u9650\u5236\u7ed3\u679c\u4e2d\u7684\u6700\u5927\u7247\u6bb5\u6570\u91cf\u3002\u4e0e `fragment_size` \u7c7b\u4f3c\uff0c\u5b83\u53ef\u4ee5\u662f\u5168\u5c40\u7684\u6216\u5b57\u6bb5\u7279\u5b9a\u7684\u3002\u8fd9\u662f\u53ef\u9009\u7684\uff0c\u9ed8\u8ba4\u503c\u4e3a 0\uff08\u65e0\u9650\u5236\uff09\u3002\u5b83\u7c7b\u4f3c\u4e8e `limit_snippets` \u9009\u9879\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_178\n<!-- request PHP -->\n\nCODE_BLOCK_179\n<!-- response PHP -->\nCODE_BLOCK_180\n\n<!-- request Python -->\nCODE_BLOCK_181\n<!-- response Python -->\nCODE_BLOCK_182\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_183\n<!-- response Python-asyncio -->\nCODE_BLOCK_184\n\n<!-- request Javascript -->\nCODE_BLOCK_185\n<!-- response Javascript -->\nCODE_BLOCK_186\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_187\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_188\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_189\n\n<!-- request TypeScript -->\nCODE_BLOCK_190\n<!-- response TypeScript -->\nCODE_BLOCK_191\n\n<!-- request Go -->\nCODE_BLOCK_192\n<!-- response Go -->\nCODE_BLOCK_193\n\n<!-- end -->\n\n<!-- example highlight json per-field limits -->\n\n#### limit, limit_words, limit_snippets\n\u9009\u9879\u5982 `limit`\u3001`limit_words` \u548c `limit_snippets` \u53ef\u4ee5\u8bbe\u7f6e\u4e3a\u5168\u5c40\u6216\u5b57\u6bb5\u7279\u5b9a\u9009\u9879\u3002\u5168\u5c40\u9009\u9879\u4f1a\u5728\u5b57\u6bb5\u7279\u5b9a\u9009\u9879\u672a\u88ab\u8986\u76d6\u65f6\u4f7f\u7528\u3002\u5728\u793a\u4f8b\u4e2d\uff0c`title` \u5b57\u6bb5\u4f7f\u7528\u9ed8\u8ba4\u9650\u5236\u8bbe\u7f6e\u8fdb\u884c\u9ad8\u4eae\u663e\u793a\uff0c\u800c `content` \u5b57\u6bb5\u4f7f\u7528\u4e0d\u540c\u7684\u9650\u5236\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_194\n<!-- request PHP -->\n\nCODE_BLOCK_195\n<!-- response PHP -->\nCODE_BLOCK_196\n<!-- request Python -->\nCODE_BLOCK_197\n<!-- response Python -->\nCODE_BLOCK_198\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_199\n<!-- response Python-asyncio -->\nCODE_BLOCK_200\n\n<!-- request Javascript -->\nCODE_BLOCK_201\n<!-- response Javascript -->\nCODE_BLOCK_202\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_203\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_204\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_205\n\n<!-- request TypeScript -->\nCODE_BLOCK_206\n<!-- response TypeScript -->\nCODE_BLOCK_207\n\n<!-- request Go -->\nCODE_BLOCK_208\n<!-- response Go -->\nCODE_BLOCK_209\n\n<!-- end -->\n\n<!-- example highlight json global limits -->\n\n#### limits_per_field\n\u4e5f\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e `limits_per_field=0` \u6765\u5f3a\u5236\u6267\u884c\u5168\u5c40\u9650\u5236\u3002\u8bbe\u7f6e\u6b64\u9009\u9879\u610f\u5473\u7740\u6240\u6709\u7ec4\u5408\u7684\u9ad8\u4eae\u7ed3\u679c\u5fc5\u987b\u5728\u6307\u5b9a\u7684\u9650\u5236\u5185\u3002\u7f3a\u70b9\u662f\uff0c\u5982\u679c\u9ad8\u4eae\u5f15\u64ce\u8ba4\u4e3a\u67d0\u4e9b\u5185\u5bb9\u66f4\u76f8\u5173\uff0c\u5219\u53ef\u80fd\u4f1a\u5728\u4e00\u4e2a\u5b57\u6bb5\u4e2d\u83b7\u5f97\u591a\u4e2a\u7247\u6bb5\u9ad8\u4eae\u663e\u793a\u800c\u5728\u53e6\u4e00\u4e2a\u5b57\u6bb5\u4e2d\u6ca1\u6709\u4efb\u4f55\u7247\u6bb5\u9ad8\u4eae\u663e\u793a\u3002\n\n<!-- intro -->\n##### JSON\uff1a\n<!-- request JSON -->\n\nCODE_BLOCK_210\n<!-- request PHP -->\n\nCODE_BLOCK_211\n<!-- response PHP -->\nCODE_BLOCK_212\n<!-- request Python -->\nCODE_BLOCK_213\n<!-- response Python -->\nCODE_BLOCK_214\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_215\n<!-- response Python-asyncio -->\nCODE_BLOCK_216\n\n<!-- request Javascript -->\nCODE_BLOCK_217\n<!-- response Javascript -->\nCODE_BLOCK_218\n<!-- intro -->\n##### Java\uff1a\n\n<!-- request Java -->\n\nCODE_BLOCK_219\n\n<!-- intro -->\n##### C#\uff1a\n\n<!-- request C# -->\n\nCODE_BLOCK_220\n\n<!-- intro -->\n##### Rust\uff1a\n\n<!-- request Rust -->\n\nCODE_BLOCK_221\n\n<!-- request TypeScript -->\nCODE_BLOCK_222\n\n<!-- request Go -->\nCODE_BLOCK_223\n<!-- end -->\n\n## CALL SNIPPETS\n\n<!-- example CALL SNIPPETS -->\n\n`CALL SNIPPETS` \u8bed\u53e5\u4f7f\u7528\u63d0\u4f9b\u7684\u6570\u636e\u548c\u67e5\u8be2\u4ee5\u53ca\u6307\u5b9a\u7684\u8868\u8bbe\u7f6e\u6784\u5efa\u4e00\u4e2a\u7247\u6bb5\u3002\u5b83\u4e0d\u80fd\u8bbf\u95ee\u5185\u7f6e\u6587\u6863\u5b58\u50a8\uff0c\u56e0\u6b64\u5efa\u8bae\u4f7f\u7528 [HIGHLIGHT() \u51fd\u6570](../Searching/Highlighting.md)\u3002\n\n\u8bed\u6cd5\u5982\u4e0b\uff1a\n\nCODE_BLOCK_224\n\n#### data\n`data` \u662f\u4ece\u4e2d\u63d0\u53d6\u7247\u6bb5\u7684\u6765\u6e90\u3002\u5b83\u53ef\u4ee5\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\u6216\u7528\u82b1\u62ec\u53f7\u5305\u56f4\u7684\u5b57\u7b26\u4e32\u5217\u8868\u3002\n#### table\n`table` \u662f\u63d0\u4f9b\u7247\u6bb5\u751f\u6210\u6587\u672c\u5904\u7406\u8bbe\u7f6e\u7684\u8868\u540d\u3002\n#### query\n`query` \u662f\u7528\u4e8e\u6784\u5efa\u7247\u6bb5\u7684\u5168\u6587\u67e5\u8be2\u3002\n#### opt_value \u548c opt_name\n`opt_value` \u548c `opt_name` \u8868\u793a [\u7247\u6bb5\u751f\u6210\u9009\u9879](../Searching/Highlighting.md)\u3002\n\n<!-- intro -->\n##### SQL\uff1a\n<!-- request SQL -->\n\nCODE_BLOCK_225\n<!-- response SQL -->\nCODE_BLOCK_226\n\n<!-- end -->",
  76. "russian": "CODE_BLOCK_147\n<!-- response PHP -->\nCODE_BLOCK_148\n<!-- request Python -->\nCODE_BLOCK_149\n<!-- response Python -->\nCODE_BLOCK_150\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_151\n<!-- response Python-asyncio -->\nCODE_BLOCK_152\n\n<!-- request Javascript -->\nCODE_BLOCK_153\n<!-- response Javascript -->\nCODE_BLOCK_154\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_155\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_156\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_157\n\n<!-- request TypeScript -->\nCODE_BLOCK_158\n<!-- response TypeScript -->\nCODE_BLOCK_159\n\n<!-- request Go -->\nCODE_BLOCK_160\n<!-- response Go -->\nCODE_BLOCK_161\n\n<!-- end -->\n\n<!-- example fragment_size -->\n#### fragment_size\n`fragment_size` \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 256. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `limit`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_162\n<!-- request PHP -->\n\nCODE_BLOCK_163\n<!-- response PHP -->\nCODE_BLOCK_164\n<!-- request Python -->\nCODE_BLOCK_165\n<!-- response Python -->\nCODE_BLOCK_166\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_167\n<!-- response Python-asyncio -->\nCODE_BLOCK_168\n\n<!-- request Javascript -->\nCODE_BLOCK_169\n<!-- response Javascript -->\nCODE_BLOCK_170\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_171\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_172\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_173\n\n<!-- request TypeScript -->\nCODE_BLOCK_174\n<!-- response TypeScript -->\nCODE_BLOCK_175\n\n<!-- request Go -->\nCODE_BLOCK_176\n<!-- response Go -->\nCODE_BLOCK_177\n\n<!-- end -->\n\n<!-- example number_of_fragments -->\n#### number_of_fragments\n`number_of_fragments` \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435. \u041a\u0430\u043a \u0438 `fragment_size`, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 0 (\u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439). \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043e\u043f\u0446\u0438\u0438 `limit_snippets`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_178\n<!-- request PHP -->\n\nCODE_BLOCK_179\n<!-- response PHP -->\nCODE_BLOCK_180\n\n<!-- request Python -->\nCODE_BLOCK_181\n<!-- response Python -->\nCODE_BLOCK_182\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_183\n<!-- response Python-asyncio -->\nCODE_BLOCK_184\n\n<!-- request Javascript -->\nCODE_BLOCK_185\n<!-- response Javascript -->\nCODE_BLOCK_186\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_187\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_188\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_189\n\n<!-- request TypeScript -->\nCODE_BLOCK_190\n<!-- response TypeScript -->\nCODE_BLOCK_191\n\n<!-- request Go -->\nCODE_BLOCK_192\n<!-- response Go -->\nCODE_BLOCK_193\n\n<!-- end -->\n\n<!-- example highlight json per-field limits -->\n\n#### limit, limit_words, limit_snippets\n\u041e\u043f\u0446\u0438\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a `limit`, `limit_words` \u0438 `limit_snippets`, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043a\u0430\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u0435 `title` \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043b\u0438\u043c\u0438\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043f\u043e\u043b\u0435 `content` \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u043b\u0438\u043c\u0438\u0442.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_194\n<!-- request PHP -->\n\nCODE_BLOCK_195\n<!-- response PHP -->\nCODE_BLOCK_196\n<!-- request Python -->\nCODE_BLOCK_197\n<!-- response Python -->\nCODE_BLOCK_198\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_199\n<!-- response Python-asyncio -->\nCODE_BLOCK_200\n\n<!-- request Javascript -->\nCODE_BLOCK_201\n<!-- response Javascript -->\nCODE_BLOCK_202\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_203\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_204\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_205\n\n<!-- request TypeScript -->\nCODE_BLOCK_206\n<!-- response TypeScript -->\nCODE_BLOCK_207\n\n<!-- request Go -->\nCODE_BLOCK_208\n<!-- response Go -->\nCODE_BLOCK_209\n\n<!-- end -->\n\n<!-- example highlight json global limits -->\n\n#### limits_per_field\n\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u043f\u0443\u0442\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f `limits_per_field=0`. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c, \u0435\u0441\u043b\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\nCODE_BLOCK_210\n<!-- request PHP -->\n\nCODE_BLOCK_211\n<!-- response PHP -->\nCODE_BLOCK_212\n<!-- request Python -->\nCODE_BLOCK_213\n<!-- response Python -->\nCODE_BLOCK_214\n\n<!-- request Python-asyncio -->\nCODE_BLOCK_215\n<!-- response Python-asyncio -->\nCODE_BLOCK_216\n\n<!-- request Javascript -->\nCODE_BLOCK_217\n<!-- response Javascript -->\nCODE_BLOCK_218\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\nCODE_BLOCK_219\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\nCODE_BLOCK_220\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\nCODE_BLOCK_221\n\n<!-- request TypeScript -->\nCODE_BLOCK_222\n\n<!-- request Go -->\nCODE_BLOCK_223\n<!-- end -->\n\n## CALL SNIPPETS\n\n<!-- example CALL SNIPPETS -->\n\n\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 `CALL SNIPPETS` \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041e\u043d \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e [\u0444\u0443\u043d\u043a\u0446\u0438\u044e HIGHLIGHT()](../Searching/Highlighting.md).\n\n\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:\n\nCODE_BLOCK_224\n\n#### data\n`data` \u0441\u043b\u0443\u0436\u0438\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430, \u043b\u0438\u0431\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a, \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438.\n#### table\n`table` \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0438\u043c\u0435\u043d\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432.\n#### query\n`query` \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432.\n#### opt_value \u0438 opt_name\n`opt_value` \u0438 `opt_name` \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 [\u043e\u043f\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432](../Searching/Highlighting.md).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\nCODE_BLOCK_225\n<!-- response SQL -->\nCODE_BLOCK_226\n\n<!-- end -->"
  77. },
  78. "is_code_or_comment": false,
  79. "model": "deepseek/deepseek-v3.2",
  80. "updated_at": 1766374277
  81. },
  82. "__meta": {
  83. "source_text": "# Highlighting\n\n<!-- example highlighting -->\n\nHighlighting enables you to obtain highlighted text fragments (referred to as snippets) from documents containing matching keywords.\n\nThe SQL `HIGHLIGHT()` function, the `\"highlight\"` property in JSON queries via HTTP, and the `highlight()` function in the PHP client all utilize the built-in document storage to retrieve the original field contents (enabled by default).\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT() FROM books WHERE MATCH('try');\n```\n\n<!-- response SQL -->\n\n```sql\n+----------------------------------------------------------+\n| highlight() |\n+----------------------------------------------------------+\n| Don`t <b>try</b> to compete in childishness, said Bliss. |\n+----------------------------------------------------------+\n1 row in set (0.00 sec)\n```\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\" : \"try\" } },\n \"highlight\": {}\n}\n```\n\n<!-- response JSON -->\n\n```json\n{\n \"took\":1,\n \"timed_out\":false,\n \"hits\":\n {\n \"total\":1,\n \"hits\":\n [\n {\n \"_id\": 4,\n \"_score\":1704,\n \"_source\":\n {\n \"title\":\"Book four\",\n \"content\":\"Don`t try to compete in childishness, said Bliss.\"\n },\n \"highlight\":\n {\n \"title\": [\"Book four\"],\n \"content\": [\"Don`t <b>try</b> to compete in childishness, said Bliss.\"]\n }\n }\n ]\n }\n}\n```\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\n```php\n$results = $index->search('try')->highlight()->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId();\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.': '.$value;\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n\n```\n\n<!-- response PHP -->\n```php\nDocument: 14\ntitle: Book four\ncontent: Don`t try to compete in childishness, said Bliss.\nHighlight for title:\n- Book four\nHighlight for content:\n- Don`t <b>try</b> to compete in childishness, said Bliss.\n\n```\n\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"try\"}},\"highlight\":{}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'4',\n u'_score': 1695,\n u'_source': {u'content': u'Don`t try to compete in childishness, said Bliss.',\n u'title': u'Book four'},\n u'highlight': {u'content': [u'Don`t <b>try</b> to compete in childishness, said Bliss.'],\n u'title': [u'Book four']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"try\"}},\"highlight\":{}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'4',\n u'_score': 1695,\n u'_source': {u'content': u'Don`t try to compete in childishness, said Bliss.',\n u'title': u'Book four'},\n u'highlight': {u'content': [u'Don`t <b>try</b> to compete in childishness, said Bliss.'],\n u'title': [u'Book four']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"try\"}},\"highlight\":{}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 4,\"_score\":1695,\"_source\":{\"title\":\"Book four\",\"content\":\"Don`t try to compete in childishness, said Bliss.\"},\"highlight\":{\"title\":[\"Book four\"],\"content\":[\"Don`t <b>try</b> to compete in childishness, said Bliss.\"]}}]}}\n```\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"try|gets|down|said\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- response Java -->\n```java\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 3\n maxScore: null\n hits: [{_id=3, _score=1597, _source={title=Book three, content=Trevize whispered, \"It gets infantile pleasure out of display. I`d love to knock it down.\"}, highlight={title=[Book three], content=[, \"It <b>gets</b> infantile pleasure , to knock it <b>down</b>.\"]}}, {_id=4, _score=1563, _source={title=Book four, content=Don`t try to compete in childishness, said Bliss.}, highlight={title=[Book four], content=[Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.]}}, {_id=5, _score=1514, _source={title=Books two, content=A door opened before them, revealing a small room. Bander said, \"Come, half-humans, I want to show you how we live.\"}, highlight={title=[Books two], content=[ a small room. Bander <b>said</b>, \"Come, half-humans, I]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"try|gets|down|said\");\nvar highlight = new Highlight();\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- response C# -->\n```clike\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 3\n maxScore: null\n hits: [{_id=3, _score=1597, _source={title=Book three, content=Trevize whispered, \"It gets infantile pleasure out of display. I`d love to knock it down.\"}, highlight={title=[Book three], content=[, \"It <b>gets</b> infantile pleasure , to knock it <b>down</b>.\"]}}, {_id=4, _score=1563, _source={title=Book four, content=Don`t try to compete in childishness, said Bliss.}, highlight={title=[Book four], content=[Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.]}}, {_id=5, _score=1514, _source={title=Books two, content=A door opened before them, revealing a small room. Bander said, \"Come, half-humans, I want to show you how we live.\"}, highlight={title=[Books two], content=[ a small room. Bander <b>said</b>, \"Come, half-humans, I]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"try|gets|down|said\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight = Highlight::new();\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\n```\n\n<!-- response Rust -->\n```rust\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 3\n maxScore: null\n hits: [{_id=3, _score=1597, _source={title=Book three, content=Trevize whispered, \"It gets infantile pleasure out of display. I`d love to knock it down.\"}, highlight={title=[Book three], content=[, \"It <b>gets</b> infantile pleasure , to knock it <b>down</b>.\"]}}, {_id=4, _score=1563, _source={title=Book four, content=Don`t try to compete in childishness, said Bliss.}, highlight={title=[Book four], content=[Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.]}}, {_id=5, _score=1514, _source={title=Books two, content=A door opened before them, revealing a small room. Bander said, \"Come, half-humans, I want to show you how we live.\"}, highlight={title=[Books two], content=[ a small room. Bander <b>said</b>, \"Come, half-humans, I]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: {}\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\"\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\"\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\nWhen using SQL for highlighting search results, you will receive snippets from various fields combined into a single string due to the limitations of the MySQL protocol. You can adjust the concatenation separators with the `field_separator` and `snippet_separator` options, as detailed below.\n\nWhen executing JSON queries through HTTP or using the PHP client, there are no such constraints, and the result set includes an array of fields containing arrays of snippets (without separators).\n\nKeep in mind that snippet generation options like `limit`, `limit_words`, and `limit_snippets` apply to each field individually by default. You can alter this behavior using the `limits_per_field` option, but it could lead to unwanted results. For example, one field may have matching keywords, but no snippets from that field are included in the result set because they didn't rank as high as snippets from other fields in the highlighting engine.\n\nThe highlighting algorithm currently prioritizes better snippets (with closer phrase matches) and then snippets with keywords not yet included in the result. Generally, it aims to highlight the best match for the query and to highlight all query keywords, as allowed by the limits. If no matches are found in the current field, the beginning of the document will be trimmed according to the limits and returned by default. To return an empty string instead, set the `allow_empty` option to 1.\n\nHighlighting is performed during the so-called `post limit` stage, which means that snippet generation is deferred not only until the entire final result set is prepared but also after the LIMIT clause is applied. For instance, with a LIMIT 20,10 clause, the `HIGHLIGHT()` function will be called a maximum of 10 times.\n\n## Highlighting options\n\n<!-- example highlighting options -->\n\nThere are several optional highlighting options that can be used to fine-tune snippet generation, which are common to SQL, HTTP, and PHP clients.\n\n#### before_match\nA string to insert before a keyword match. The `%SNIPPET_ID%` macro can be used in this string. The first occurrence of the macro is replaced with an incrementing snippet number within the current snippet. Numbering starts at 1 by default but can be overridden with the `start_snippet_id` option. %SNIPPET_ID% restarts at the beginning of each new document. The default is `<b>`.\n\n#### after_match\nA string to insert after a keyword match. The default is `</b>`.\n\n#### limit\nThe maximum snippet size, in symbols (codepoints). The default is 256. This is applied per-field by default, see `limits_per_field`.\n\n#### limit_words\nLimits the maximum number of words that can be included in the result. Note that this limit applies to all words, not just the matched keywords to highlight. For example, if highlighting `Mary` and a snippet `Mary had a little lamb` is selected, it contributes 5 words to this limit, not just 1. The default is 0 (no limit). This is applied per-field by default, see `limits_per_field`.\n\n#### limit_snippets\nLimits the maximum number of snippets that can be included in the result. The default is 0 (no limit). This is applied per-field by default, see `limits_per_field`.\n\n#### limits_per_field\nDetermines whether `limit`, `limit_words`, and `limit_snippets` operate as individual limits in each field of the document being highlighted or as global limits for the entire document. Setting this option to 0 means that all combined highlighting results for one document must be within the specified limits. The downside is that you may have several snippets highlighted in one field and none in another if the highlighting engine decides they are more relevant. The default is 1 (use per-field limits).\n#### around\nThe number of words to select around each matching keyword block. The default is 5.\n\n#### use_boundaries\nDetermines whether to additionally break snippets by phrase boundary characters, as configured in table settings with the [phrase_boundary](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#phrase_boundary) directive. The default is 0 (don't use boundaries).\n\n#### weight_order\nSpecifies whether to sort the extracted snippets in order of relevance (decreasing weight) or in order of appearance in the document (increasing position). The default is 0 (don't use weight order).\n\n#### force_all_words\nIgnores the length limit until the result includes all keywords. The default is 0 (don't force all keywords).\n\n#### start_snippet_id\nSets the starting value of the `%SNIPPET_ID%` macro (which is detected and expanded in `before_match`, `after_match` strings). The default is 1.\n\n#### html_strip_mode\nDefines the HTML stripping mode setting. Defaults to `index`, meaning that table settings will be used. Other values include `none` and `strip`, which forcibly skip or apply stripping regardless of table settings; and `retain`, which retains HTML markup and protects it from highlighting. The `retain` mode can only be used when highlighting full documents and therefore requires that no snippet size limits are set. The allowed string values are `none`, `strip`, `index`, and `retain`.\n\n#### allow_empty\nPermits an empty string to be returned as the highlighting result when no snippets could be generated in the current field (no keyword match or no snippets fit the limit). By default, the beginning of the original text would be returned instead of an empty string. The default is 0 (don't allow an empty result).\n\n#### snippet_boundary\nEnsures that snippets do not cross a sentence, paragraph, or zone boundary (when used with a table that has the respective indexing settings enabled). The allowed values are `sentence`, `paragraph`, and `zone`.\n\n#### emit_zones\nEmits an HTML tag with the enclosing zone name before each snippet. The default is 0 (don't emit zone names).\n\n#### force_snippets\nDetermines whether to force snippet generation even if limits allow highlighting the entire text. The default is 0 (don't force snippet generation).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT({limit=50}) FROM books WHERE MATCH('try|gets|down|said');\n```\n\n<!-- response SQL -->\n```sql\n+---------------------------------------------------------------------------+\n| highlight({limit=50}) |\n+---------------------------------------------------------------------------+\n| ... , \"It <b>gets</b> infantile pleasure ... to knock it <b>down</b>.\" |\n| Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss. |\n| ... a small room. Bander <b>said</b>, \"Come, half-humans, I ... |\n+---------------------------------------------------------------------------+\n3 rows in set (0.00 sec)\n```\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": {\"query_string\": \"try|gets|down|said\"},\n \"highlight\": { \"limit\":50 }\n}\n```\n\n<!-- response JSON -->\n\n```json\n{\n \"took\":2,\n \"timed_out\":false,\n \"hits\":\n {\n \"total\":3,\n \"hits\":\n [\n {\n \"_id\": 3,\n \"_score\":1602,\n \"_source\":\n {\n \"title\":\"Book three\",\n \"content\":\"Trevize whispered, \\\"It gets infantile pleasure out of display. I`d love to knock it down.\\\"\"\n },\n \"highlight\":\n {\n \"title\":\n [\n \"Book three\"\n ],\n \"content\":\n [\n \", \\\"It <b>gets</b> infantile pleasure \",\n \" to knock it <b>down</b>.\\\"\"\n ]\n }\n },\n {\n \"_id\": 4,\n \"_score\":1573,\n \"_source\":\n {\n \"title\":\"Book four\",\n \"content\":\"Don`t try to compete in childishness, said Bliss.\"\n },\n \"highlight\":\n {\n \"title\":\n [\n \"Book four\"\n ],\n \"content\":\n [\n \"Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.\"\n ]\n }\n },\n {\n \"_id\": 2,\n \"_score\":1521,\n \"_source\":\n {\n \"title\":\"Book two\",\n \"content\":\"A door opened before them, revealing a small room. Bander said, \\\"Come, half-humans, I want to show you how we live.\\\"\"\n },\n \"highlight\":\n {\n \"title\":\n [\n \"Book two\"\n ],\n \"content\":\n [\n \" a small room. Bander <b>said</b>, \\\"Come, half-humans, I\"\n ]\n }\n }\n ]\n }\n}\n```\n\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\n```php\n$results = $index->search('try|gets|down|said')->highlight([],['limit'=>50])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId();\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.': '.$value;\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo $snippet.\"\\n\";\n }\n }\n}\n```\n\n<!-- response PHP -->\n```php\nDocument: 3\ntitle: Book three\ncontent: Trevize whispered, \"It gets infantile pleasure out of display. I`d love to knock it down.\"\nHighlight for title:\n- Book four\nHighlight for content:\n, \"It <b>gets</b> infantile pleasure\nto knock it <b>down</b>.\"\n\nDocument: 4\ntitle: Book four\ncontent: Don`t try to compete in childishness, said Bliss.\nHighlight for title:\n- Book four\nHighlight for content:\nDon`t <b>try</b> to compete in childishness, <b>said</b> Bliss.\n\nDocument: 2\ntitle: Book two\ncontent: A door opened before them, revealing a small room. Bander said, \"Come, half-humans, I want to show you how we live.\nHighlight for title:\n- Book two\nHighlight for content:\n a small room. Bander <b>said</b>, \\\"Come, half-humans, I\n```\n\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"try\"}},\"highlight\":{\"limit\":50}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'4',\n u'_score': 1695,\n u'_source': {u'content': u'Don`t try to compete in childishness, said Bliss.',\n u'title': u'Book four'},\n u'highlight': {u'content': [u'Don`t <b>try</b> to compete in childishness, said Bliss.'],\n u'title': [u'Book four']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"try\"}},\"highlight\":{\"limit\":50}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'4',\n u'_score': 1695,\n u'_source': {u'content': u'Don`t try to compete in childishness, said Bliss.',\n u'title': u'Book four'},\n u'highlight': {u'content': [u'Don`t <b>try</b> to compete in childishness, said Bliss.'],\n u'title': [u'Book four']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"query_string\":\"try|gets|down|said\"},\"highlight\":{\"limit\":50}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":3,\"hits\":[{\"_id\": 3,\"_score\":1597,\"_source\":{\"title\":\"Book three\",\"content\":\"Trevize whispered, \\\"It gets infantile pleasure out of display. I`d love to knock it down.\\\"\"},\"highlight\":{\"title\":[\"Book three\"],\"content\":[\", \\\"It <b>gets</b> infantile pleasure \",\" to knock it <b>down</b>.\\\"\"]}},{\"_id\": 4,\"_score\":1563,\"_source\":{\"title\":\"Book four\",\"content\":\"Don`t try to compete in childishness, said Bliss.\"},\"highlight\":{\"title\":[\"Book four\"],\"content\":[\"Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.\"]}},{\"_id\": 5,\"_score\":1514,\"_source\":{\"title\":\"Books two\",\"content\":\"A door opened before them, revealing a small room. Bander said, \\\"Come, half-humans, I want to show you how we live.\\\"\"},\"highlight\":{\"title\":[\"Books two\"],\"content\":[\" a small room. Bander <b>said</b>, \\\"Come, half-humans, I\"]}}]}}\n```\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"try|gets|down|said\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"limit\",50);\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- response Java -->\n```java\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 3\n maxScore: null\n hits: [{_id=3, _score=1597, _source={title=Book three, content=Trevize whispered, \"It gets infantile pleasure out of display. I`d love to knock it down.\"}, highlight={title=[Book three], content=[, \"It <b>gets</b> infantile pleasure , to knock it <b>down</b>.\"]}}, {_id=4, _score=1563, _source={title=Book four, content=Don`t try to compete in childishness, said Bliss.}, highlight={title=[Book four], content=[Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.]}}, {_id=5, _score=1514, _source={title=Books two, content=A door opened before them, revealing a small room. Bander said, \"Come, half-humans, I want to show you how we live.\"}, highlight={title=[Books two], content=[ a small room. Bander <b>said</b>, \"Come, half-humans, I]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"try|gets|down|said\");\nvar highlight = new Highlight();\nhighlight.Limit = 50;\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- response C# -->\n```clike\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 3\n maxScore: null\n hits: [{_id=3, _score=1597, _source={title=Book three, content=Trevize whispered, \"It gets infantile pleasure out of display. I`d love to knock it down.\"}, highlight={title=[Book three], content=[, \"It <b>gets</b> infantile pleasure , to knock it <b>down</b>.\"]}}, {_id=4, _score=1563, _source={title=Book four, content=Don`t try to compete in childishness, said Bliss.}, highlight={title=[Book four], content=[Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.]}}, {_id=5, _score=1514, _source={title=Books two, content=A door opened before them, revealing a small room. Bander said, \"Come, half-humans, I want to show you how we live.\"}, highlight={title=[Books two], content=[ a small room. Bander <b>said</b>, \"Come, half-humans, I]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"try|gets|down|said\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight = Highlight {\n limit: Some(50),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\n```\n\n<!-- response Rust -->\n```rust\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 3\n maxScore: null\n hits: [{_id=3, _score=1597, _source={title=Book three, content=Trevize whispered, \"It gets infantile pleasure out of display. I`d love to knock it down.\"}, highlight={title=[Book three], content=[, \"It <b>gets</b> infantile pleasure , to knock it <b>down</b>.\"]}}, {_id=4, _score=1563, _source={title=Book four, content=Don`t try to compete in childishness, said Bliss.}, highlight={title=[Book four], content=[Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss.]}}, {_id=5, _score=1514, _source={title=Books two, content=A door opened before them, revealing a small room. Bander said, \"Come, half-humans, I want to show you how we live.\"}, highlight={title=[Books two], content=[ a small room. Bander <b>said</b>, \"Come, half-humans, I]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: { match: { *: 'Text } },\n highlight: { limit: 2}\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":2,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"_id\": 2,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 2\",\n\t\t\t\t\"name\":\"Doc 2\",\n\t\t\t\t\"cat\":2\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 2</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":2,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"_id\": 2,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 2\",\n\t\t\t\t\"name\":\"Doc 2\",\n\t\t\t\t\"cat\":2\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 2</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n```\n\n\n<!-- end -->\n\n\n## Highlighting via SQL\n\nThe `HIGHLIGHT()` function can be used to highlight search results. Here's the syntax:\n\n```sql\nHIGHLIGHT([options], [field_list], [query] )\n```\n\n<!-- example highlight() no args -->\nBy default, it works with no arguments.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT() FROM books WHERE MATCH('before');\n```\n\n<!-- response SQL -->\n```sql\n+-----------------------------------------------------------+\n| highlight() |\n+-----------------------------------------------------------+\n| A door opened <b>before</b> them, revealing a small room. |\n+-----------------------------------------------------------+\n1 row in set (0.00 sec)\n```\n\n<!-- end -->\n\n<!-- example highlight() field syntax -->\n\n`HIGHLIGHT()` retrieves all available full-text fields from document storage and highlights them against the provided query. Field syntax in queries is supported. Field text is separated by `field_separator`, which can be modified in the options.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT() FROM books WHERE MATCH('@title one');\n```\n\n<!-- response SQL -->\n```sql\n+-----------------+\n| highlight() |\n+-----------------+\n| Book <b>one</b> |\n+-----------------+\n1 row in set (0.00 sec)\n```\n\n<!-- end -->\n\n<!-- example highlight() options -->\nOptional first argument in `HIGHLIGHT()` is the list of options.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT({before_match='[match]',after_match='[/match]'}) FROM books WHERE MATCH('@title one');\n```\n\n<!-- response SQL -->\n```sql\n+------------------------------------------------------------+\n| highlight({before_match='[match]',after_match='[/match]'}) |\n+------------------------------------------------------------+\n| Book [match]one[/match] |\n+------------------------------------------------------------+\n1 row in set (0.00 sec)\n```\n\n<!-- end -->\n\n<!-- example highlight() field list -->\n\nThe optional second argument is a string containing a single field or a comma-separated list of fields. If this argument is present, only the specified fields will be fetched from document storage and highlighted. An empty string as the second argument signifies \"fetch all available fields.\"\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT({},'title,content') FROM books WHERE MATCH('one|robots');\n```\n\n<!-- response SQL -->\n```sql\n+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| highlight({},'title,content') |\n+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| Book <b>one</b> | They followed Bander. The <b>robots</b> remained at a polite distance, but their presence was a constantly felt threat. |\n| Bander ushered all three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander gestured the other <b>robots</b> away and entered itself. The door closed behind it. |\n+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n2 rows in set (0.00 sec)\n```\n\n<!-- end -->\n\n<!-- example highlight() string attr -->\n\nAlternatively, you can use the second argument to specify a string attribute or field name without quotes. In this case, the supplied string will be highlighted against the provided query, but field syntax will be ignored.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT({}, title) FROM books WHERE MATCH('one');\n```\n\n<!-- response SQL -->\n```sql\n+---------------------+\n| highlight({},title) |\n+---------------------+\n| Book <b>one</b> |\n| Book five |\n+---------------------+\n2 rows in set (0.00 sec)\n```\n\n<!-- end -->\n\n<!-- example highlight() query -->\n\nThe optional third argument is the query. This is used to highlight search results against a query different from the one used for searching.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT({},'title', 'five') FROM books WHERE MATCH('one');\n```\n\n<!-- response SQL -->\n```sql\n+-------------------------------+\n| highlight({},'title', 'five') |\n+-------------------------------+\n| Book one |\n| Book <b>five</b> |\n+-------------------------------+\n2 rows in set (0.00 sec)\n```\n\n<!-- end -->\n\n<!-- example HIGHLIGHT TO_STRING -->\n\nAlthough `HIGHLIGHT()` is designed to work with stored full-text fields and string attributes, it can also be used to highlight arbitrary text. Keep in mind that if the query contains any field search operators (e.g., `@title hello @body world`), the field part of them is ignored in this case.\n\n<!-- intro -->\n##### SQL:\n\n<!-- request SQL -->\n\n```sql\nSELECT HIGHLIGHT({},TO_STRING('some text to highlight'), 'highlight') FROM books WHERE MATCH('@title one');\n```\n\n<!-- response SQL -->\n```sql\n+----------------------------------------------------------------+\n| highlight({},TO_STRING('some text to highlight'), 'highlight') |\n+----------------------------------------------------------------+\n| some text to <b>highlight</b> |\n+----------------------------------------------------------------+\n1 row in set (0.00 sec)\n```\n\n<!-- end -->\n\nSeveral options are relevant only when generating a single string as a result (not an array of snippets). This applies exclusively to the SQL `HIGHLIGHT()` function:\n\n#### snippet_separator\nA string to insert between snippets. The default is ` ... `.\n#### field_separator\nA string to insert between fields. The default is `|`.\n\n\nAnother way to highlight text is to use the [CALL SNIPPETS](../Searching/Highlighting.md#CALL-SNIPPETS) statement. This mostly duplicates the `HIGHLIGHT()` functionality but cannot use built-in document storage. However, it can load source text from files.\n\n\n## Highlighting via HTTP\n\n<!-- example highlight in JSON -->\n\nTo highlight full-text search results in JSON queries via HTTP, field contents must be stored in document storage (enabled by default). In the example, full-text fields `content` and `title` are fetched from document storage and highlighted against the query specified in the `query` clause.\n\nHighlighted snippets are returned in the `highlight` property of the `hits` array.\n\n<!-- intro -->\n##### JSON:\n\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\":\n {\n \"fields\": [\"content\"]\n }\n}\n```\n\n<!-- response JSON -->\n\n```json\n{\n \"took\": 0,\n \"timed_out\": false,\n \"hits\": {\n \"total\": 1,\n \"hits\": [\n {\n \"_id\": 1,\n \"_score\": 2788,\n \"_source\": {\n \"title\": \"Books one\",\n \"content\": \"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"\n },\n \"highlight\": {\n \"content\": [\n \"They followed Bander. The <b>robots</b> remained at a polite distance, \",\n \" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\",\n \" gestured the other <b>robots</b> away and entered itself. The\"\n ]\n }\n }\n ]\n }\n}\n```\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$results = $index->search('one|robots')->highlight(['content'])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n\n```\n\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- They followed Bander. The <b>robots</b> remained at a polite distance,\n- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\n- gestured the other <b>robots</b> away and entered itself. The\n\n```\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\"]}}))\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\"]}}))\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\"]}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\"They followed Bander. The <b>robots</b> remained at a polite distance, \",\" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\",\" gestured the other <b>robots</b> away and entered itself. The\"]}}]}}\n```\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"fields\",new String[] {\"content\"});\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- response Java -->\n```java\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 1\n maxScore: null\n hits: [{_id=1, _score=2788, _source={title=Books one, content=They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. }, highlight={title=[Books <b>one</b>], content=[They followed Bander. The <b>robots</b> remained at a polite distance, , three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander, gestured the other <b>robots</b> away and entered itself. The]}}]\n aggregations: null\n }\n profile: null\n}\n\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.Fieldnames = new List<string> {\"content\"};\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- response C# -->\n```clike\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 1\n maxScore: null\n hits: [{_id=1, _score=2788, _source={title=Books one, content=They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. }, highlight={title=[Books <b>one</b>], content=[They followed Bander. The <b>robots</b> remained at a polite distance, , three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander, gestured the other <b>robots</b> away and entered itself. The]}}]\n aggregations: null\n }\n profile: null\n}\n\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 1] = [\"content\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\n```\n\n<!-- response Rust -->\n```rust\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 1\n maxScore: null\n hits: [{_id=1, _score=2788, _source={title=Books one, content=They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. }, highlight={title=[Books <b>one</b>], content=[They followed Bander. The <b>robots</b> remained at a polite distance, , three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander, gestured the other <b>robots</b> away and entered itself. The]}}]\n aggregations: null\n }\n profile: null\n}\n\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1|Text 9'\n }\n },\n highlight: {}\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1|Text 9\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\n<!-- example highlight JSON all field -->\n\nTo highlight all possible fields, pass an empty object as the `highlight` property.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\": {}\n}\n```\n\n<!-- response JSON -->\n\n```json\n{\n \"took\": 0,\n \"timed_out\": false,\n \"hits\": {\n \"total\": 1,\n \"hits\": [\n {\n \"_id\": 1,\n \"_score\": 2788,\n \"_source\": {\n \"title\": \"Books one\",\n \"content\": \"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"\n },\n \"highlight\": {\n \"title\": [\n \"Books <b>one</b>\"\n ],\n \"content\": [\n \"They followed Bander. The <b>robots</b> remained at a polite distance, \",\n \" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\",\n \" gestured the other <b>robots</b> away and entered itself. The\"\n ]\n }\n }\n ]\n }\n}\n```\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$results = $index->search('one|robots')->highlight()->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n\n```\n\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for title:\n- Books <b>one</b>\nHighlight for content:\n- They followed Bander. The <b>robots</b> remained at a polite distance,\n- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\n- gestured the other <b>robots</b> away and entered itself. The\n\n```\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"title\":[\"Books <b>one</b>\"],\"content\":[\"They followed Bander. The <b>robots</b> remained at a polite distance, \",\" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\",\" gestured the other <b>robots</b> away and entered itself. The\"]}}]}}\n\n```\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- response Java -->\n```java\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 1\n maxScore: null\n hits: [{_id=1, _score=2788, _source={title=Books one, content=They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. }, highlight={title=[Books <b>one</b>], content=[They followed Bander. The <b>robots</b> remained at a polite distance, , three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander, gestured the other <b>robots</b> away and entered itself. The]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n\n```\n\n<!-- response C# -->\n```clike\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 1\n maxScore: null\n hits: [{_id=1, _score=2788, _source={title=Books one, content=They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. }, highlight={title=[Books <b>one</b>], content=[They followed Bander. The <b>robots</b> remained at a polite distance, , three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander, gestured the other <b>robots</b> away and entered itself. The]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\n\nlet highlight = Highlight::new();\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\n```\n\n<!-- response Rust -->\n```rust\nclass SearchResponse {\n took: 0\n timedOut: false\n hits: class SearchResponseHits {\n total: 1\n maxScore: null\n hits: [{_id=1, _score=2788, _source={title=Books one, content=They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. }, highlight={title=[Books <b>one</b>], content=[They followed Bander. The <b>robots</b> remained at a polite distance, , three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander, gestured the other <b>robots</b> away and entered itself. The]}}]\n aggregations: null\n }\n profile: null\n}\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1|Doc 1'\n }\n },\n highlight: {}\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t],\n\t\t\t\t\"name\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Doc 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1|Doc 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t],\n\t\t\t\t\"name\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Doc 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n\n<!-- end -->\n\nIn addition to common highlighting options, several synonyms are available for JSON queries via HTTP:\n\n#### fields\nThe `fields` object contains attribute names with options. It can also be an array of field names (without any options).\n\nNote that by default, highlighting attempts to highlight the results following the full-text query. In a general case, when you don't specify fields to highlight, the highlight is based on your full-text query. However, if you specify fields to highlight, it highlights only if the full-text query matches the selected fields.\n\n#### encoder\nThe `encoder` can be set to `default` or `html`. When set to `html`, it retains HTML markup when highlighting. This works similarly to the `html_strip_mode=retain` option.\n\n<!-- example highlight_query -->\n#### highlight_query\nThe `highlight_query` option allows you to highlight against a query other than your search query. The syntax is the same as in the main `query`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"content\": \"one|robots\" } },\n \"highlight\":\n {\n \"fields\": [ \"content\"],\n \"highlight_query\": { \"match\": { \"*\":\"polite distance\" } }\n }\n}\n```\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'one|robots'], 'content'));\n\n$results = $index->search($bool)->highlight(['content'],['highlight_query'=>['match'=>['*'=>'polite distance']]])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"content\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\"],\"highlight_query\":{\"match\":{\"*\":\"polite distance\"}}}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 1788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'. The robots remained at a <b>polite distance</b>, but their presence was a']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"content\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\"],\"highlight_query\":{\"match\":{\"*\":\"polite distance\"}}}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 1788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'. The robots remained at a <b>polite distance</b>, but their presence was a']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"content\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\"],\"highlight_query\":{\"match\":{\"*\":\"polite distance\"}}}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":1788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\". The robots remained at a <b>polite distance</b>, but their presence was a\"]}}]}}\n```\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\nput(\"fields\",new String[] {\"content\",\"title\"});\nput(\"highlight_query\",\n new HashMap<String,Object>(){{\n put(\"match\", new HashMap<String,Object>(){{\n put(\"*\",\"polite distance\");\n }});\n }});\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.Fieldnames = new List<string> {\"content\", \"title\"};\nDictionary<string, Object> match = new Dictionary<string, Object>();\nmatch.Add(\"*\", \"polite distance\");\nDictionary<string, Object> highlightQuery = new Dictionary<string, Object>();\nhighlightQuery.Add(\"match\", match);\nhighlight.HighlightQuery = highlightQuery;\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet mut highlight_match_filter = HashMap::new();\nhighlight_match_filter.insert(\"*\".to_string(), \"polite distance\".to_string());\nlet highlight_query = QueryFilter {\n r#match: Some(serde_json::json!(highlight_match_filter)),\n ..Default::default(),\n};\nlet highlight_fields [String; 2] = [\"content\".to_string(), \"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n highlight_query: Some(Box::new(highlight_query)),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: {\n fields: ['content'],\n highlight_query: {\n match: {*: 'Text'}\n }\n }\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text</b> 1\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nhighlightField := manticoreclient.NetHighlightField(\"content\")\nhighlightFields := []interface{} { highlightField }\nhighlight.SetFields(highlightFields)\nqueryMatchClause := map[string]interface{} {\"*\": \"Text\"};\nhighlightQuery := map[string]interface{} {\"match\": queryMatchClause};\nhighlight.SetHighlightQuery(highlightQuery)\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text</b> 1\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\n<!-- example pre_tags -->\n\n#### pre_tags and post_tags\n`pre_tags` and `post_tags` set the opening and closing tags for highlighted text snippets. They function similarly to the `before_match` and `after_match` options. These are optional, with default values of `<b>` and `</b>`.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\":\n {\n \"fields\": [ \"content\", \"title\" ],\n \"pre_tags\": \"before_\",\n \"post_tags\": \"_after\"\n }\n}\n```\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'one|robots'], '*'));\n\n$results = $index->search($bool)->highlight(['content','title'],['pre_tags'=>'before_','post_tags'=>'_after'])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- They followed Bander. The before_robots_after remained at a polite distance,\n- three into the room. before_One_after of the before_robots_after followed as well. Bander\n- gestured the other before_robots_after away and entered itself. The\nHighlight for title:\n- Books before_one_after\n\n```\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"pre_tags\":\"before_\",\"post_tags\":\"_after\"}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The before_robots_after remained at a polite distance, ',\n u' three into the room. before_One_after of the before_robots_after followed as well. Bander',\n u' gestured the other before_robots_after away and entered itself. The'],\n u'title': [u'Books before_one_after']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"pre_tags\":\"before_\",\"post_tags\":\"_after\"}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The before_robots_after remained at a polite distance, ',\n u' three into the room. before_One_after of the before_robots_after followed as well. Bander',\n u' gestured the other before_robots_after away and entered itself. The'],\n u'title': [u'Books before_one_after']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"pre_tags\":\"before_\",\"post_tags\":\"_after\"}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\"They followed Bander. The before_robots_after remained at a polite distance, \",\" three into the room. before_One_after of the before_robots_after followed as well. Bander\",\" gestured the other before_robots_after away and entered itself. The\"],\"title\":[\"Books before_one_after\"]}}]}}\n```\n\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"fields\",new String[] {\"content\",\"title\"});\n put(\"pre_tags\",\"before_\");\n put(\"post_tags\",\"_after\");\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.Fieldnames = new List<string> {\"content\", \"title\"};\nhighlight.PreTags = \"before_\";\nhighlight.PostTags = \"_after\";\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 2] = [\"content\".to_string(), \"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n pre_tags: Some(\"before_\".to_string()),\n post_tags: Some(\"_after\".to_string()),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: {\n pre_tags: 'before_',\n post_tags: '_after'\n }\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"before_Text 1_after\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"}\nquery := map[string]interface{} {\"match\": matchClause}\nsearchRequest.SetQuery(query)\nhighlight := manticoreclient.NewHighlight()\nhighlight.SetPreTags(\"before_\")\nhighlight.SetPostTags(\"_after\")\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"before_Text 1_after\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\n<!-- example no_match_size -->\n#### no_match_size\n`no_match_size` functions similarly to the `allow_empty` option. If set to 0, it acts as `allow_empty=1`, allowing an empty string to be returned as a highlighting result when a snippet could not be generated. Otherwise, the beginning of the field will be returned. This is optional, with a default value of 1.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\":\n {\n \"fields\": [ \"content\", \"title\" ],\n \"no_match_size\": 0\n }\n}\n```\n<!-- intro -->\n##### PHP:\n\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'one|robots'], '*'));\n\n$results = $index->search($bool)->highlight(['content','title'],['no_match_size'=>0])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- They followed Bander. The <b>robots</b> remained at a polite distance,\n- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\n- gestured the other <b>robots</b> away and entered itself. The\nHighlight for title:\n- Books <b>one</b>\n```\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"no_match_size\":0}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"no_match_size\":0}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"no_match_size\":0}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\"They followed Bander. The <b>robots</b> remained at a polite distance, \",\" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\",\" gestured the other <b>robots</b> away and entered itself. The\"],\"title\":[\"Books <b>one</b>\"]}}]}}\n\n```\n\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"fields\",new String[] {\"content\",\"title\"});\n put(\"no_match_size\",0);\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.Fieldnames = new List<string> {\"content\", \"title\"};\nhighlight.NoMatchSize = 0;\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 2] = [\"content\".to_string(), \"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n no_match_size: Some(NoMatchSize::Variant0),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: {no_match_size: 0}\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nhighlight.SetNoMatchSize(0)\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\n<!-- example order -->\n#### order\n`order` sets the sorting order of extracted snippets. If set to `\"score\"`, it sorts the extracted snippets in order of relevance. This is optional and works similarly to the `weight_order` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\":\n {\n \"fields\": [ \"content\", \"title\" ],\n \"order\": \"score\"\n }\n}\n```\n\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'one|robots'], '*'));\n\n$results = $index->search($bool)->highlight(['content','title'],['order'=>\"score\"])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\n- gestured the other <b>robots</b> away and entered itself. The\n- They followed Bander. The <b>robots</b> remained at a polite distance,\nHighlight for title:\n- Books <b>one</b>\n```\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"order\":\"score\"}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The',\n u'They followed Bander. The <b>robots</b> remained at a polite distance, '],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"order\":\"score\"}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The',\n u'They followed Bander. The <b>robots</b> remained at a polite distance, '],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"order\":\"score\"}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\",\" gestured the other <b>robots</b> away and entered itself. The\",\"They followed Bander. The <b>robots</b> remained at a polite distance, \"],\"title\":[\"Books <b>one</b>\"]}}]}}\n\n\n```\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"fields\",new String[] {\"content\",\"title\"});\n put(\"order\",\"score\");\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.Fieldnames = new List<string> {\"content\", \"title\"};\nhighlight.Order = \"score\";\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 2] = [\"content\".to_string(), \"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n order: Some(Order::Score),\n post_tags: Some(\"_after\".to_string()),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: { order: 'score' }\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nhighlight.SetOrder(\"score\")\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n\n<!-- end -->\n\n<!-- example fragment_size -->\n#### fragment_size\n`fragment_size` sets the maximum snippet size in symbols. It can be global or per-field. Per-field options override global options. This is optional, with a default value of 256. It works similarly to the `limit` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\":\n {\n \"fields\": [ \"content\", \"title\" ],\n \"fragment_size\": 100\n }\n}\n```\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'one|robots'], '*'));\n\n$results = $index->search($bool)->highlight(['content','title'],['fragment_size'=>100])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- the room. <b>One</b> of the <b>robots</b> followed as well\n- Bander gestured the other <b>robots</b> away and entered\nHighlight for title:\n- Books <b>one</b>\n```\n<!-- request Python -->\n``` python\nres = searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"fragment_size\":100}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' the room. <b>One</b> of the <b>robots</b> followed as well',\n u'Bander gestured the other <b>robots</b> away and entered '],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"fragment_size\":100}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' the room. <b>One</b> of the <b>robots</b> followed as well',\n u'Bander gestured the other <b>robots</b> away and entered '],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"fragment_size\":100}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\" the room. <b>One</b> of the <b>robots</b> followed as well\",\"Bander gestured the other <b>robots</b> away and entered \"],\"title\":[\"Books <b>one</b>\"]}}]}}\n```\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"fields\",new String[] {\"content\",\"title\"});\n put(\"fragment_size\",100);\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.Fieldnames = new List<string> {\"content\", \"title\"};\nhighlight.FragmentSize = 100;\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 2] = [\"content\".to_string(), \"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n fragment_size: Some(serde_json::json!(100)),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: { fragment_size: 4}\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nhighlight.SetFragmentSize(4)\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\n<!-- example number_of_fragments -->\n#### number_of_fragments\n`number_of_fragments` limits the maximum number of snippets in the result. Like `fragment_size`, it can be global or per-field. This is optional, with a default value of 0 (no limit). It works similarly to the `limit_snippets` option.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\":\n {\n \"fields\": [ \"content\", \"title\" ],\n \"number_of_fragments\": 10\n }\n}\n```\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'one|robots'], '*'));\n\n$results = $index->search($bool)->highlight(['content','title'],['number_of_fragments'=>10])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- They followed Bander. The <b>robots</b> remained at a polite distance,\n- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\n- gestured the other <b>robots</b> away and entered itself. The\nHighlight for title:\n- Books <b>one</b>\n\n```\n\n<!-- request Python -->\n``` python\nres =searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"number_of_fragments\":10}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"number_of_fragments\":10}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u'They followed Bander. The <b>robots</b> remained at a polite distance, ',\n u' three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander',\n u' gestured the other <b>robots</b> away and entered itself. The'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":[\"content\",\"title\"],\"number_of_fragments\":10}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\"They followed Bander. The <b>robots</b> remained at a polite distance, \",\" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander\",\" gestured the other <b>robots</b> away and entered itself. The\"],\"title\":[\"Books <b>one</b>\"]}}]}}\n\n```\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"fields\",new String[] {\"content\",\"title\"});\n put(\"number_of_fragments\",10);\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.Fieldnames = new List<string> {\"content\", \"title\"};\nhighlight.NumberOfFragments = 10;\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 2] = [\"content\".to_string(), \"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n number_of_fragments: Some(serde_json::json!(10)),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: { number_of_fragments: 1}\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nhighlight.SetNumberOfFragments(1)\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text 1</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\n<!-- example highlight json per-field limits -->\n\n#### limit, limit_words, limit_snippets\nOptions like `limit`, `limit_words`, and `limit_snippets` can be set as global or per-field options. Global options are used as per-field limits unless per-field options override them. In the example, the `title` field is highlighted with default limit settings, while the `content` field uses a different limit.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"*\": \"one|robots\" } },\n \"highlight\":\n {\n\t\t\"fields\":\n\t\t{\n\t\t\t\"title\": {},\n\t\t\t\"content\" : { \"limit\": 50 }\n\t\t}\n }\n}\n```\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'one|robots'], '*'));\n\n$results = $index->search($bool)->highlight(['content'=>['limit'=>50],'title'=>new \\stdClass])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- into the room. <b>One</b> of the <b>robots</b> followed as well\nHighlight for title:\n- Books <b>one</b>\n```\n<!-- request Python -->\n``` python\nres =searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":{\"title\":{},\"content\":{\"limit\":50}}}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' into the room. <b>One</b> of the <b>robots</b> followed as well'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":{\"title\":{},\"content\":{\"limit\":50}}}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 2788,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' into the room. <b>One</b> of the <b>robots</b> followed as well'],\n u'title': [u'Books <b>one</b>']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"*\":\"one|robots\"}},\"highlight\":{\"fields\":{\"title\":{},\"content\":{\"limit\":50}}}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":2788,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"title\":[\"Books <b>one</b>\"],\"content\":[\" into the room. <b>One</b> of the <b>robots</b> followed as well\"]}}]}}\n```\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"fields\",new HashMap<String,Object>(){{\n put(\"title\",new HashMap<String,Object>(){{}});\n put(\"content\",new HashMap<String,Object>(){{\n put(\"limit\",50);\n }});\n }}\n );\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nvar highlightField = new HighlightField(\"title\");\nhighlightField.Limit = 50;\nhighlight.Fields = new List<Object> {highlightField};\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 1] = [\"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n limit: Some(serde_json::json!(50)),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: {\n fields: {\n content: { limit:1 }\n }\n }\n});\n```\n<!-- response TypeScript -->\n``` typescript\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nhighlightField := manticoreclient.NetHighlightField(\"content\")\nhighlightField.SetLimit(1);\nhighlightFields := []interface{} { highlightField }\nhighlight.SetFields(highlightFields)\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- response Go -->\n``` go\n{\n\t\"took\":0,\n\t\"timed_out\":false,\n\t\"hits\":\n\t{\n\t\t\"total\":1,\n\t\t\"hits\":\n\t\t[{\n\t\t\t\"_id\": 1,\n\t\t\t\"_score\":1480,\n\t\t\t\"_source\":\n\t\t\t{\n\t\t\t\t\"content\":\"Text 1\",\n\t\t\t\t\"name\":\"Doc 1\",\n\t\t\t\t\"cat\":1\n\t\t\t},\n\t\t\t\"highlight\":\n\t\t\t{\n\t\t\t\t\"content\":\n\t\t\t\t[\n\t\t\t\t\t\"<b>Text</b>\"\n\t\t\t\t]\n\t\t\t}\n\t\t]}\n\t}\n}\n```\n\n<!-- end -->\n\n<!-- example highlight json global limits -->\n\n#### limits_per_field\nGlobal limits can also be enforced by specifying `limits_per_field=0`. Setting this option means that all combined highlighting results must be within the specified limits. The downside is that you may get several snippets highlighted in one field and none in another if the highlighting engine decides that they are more relevant.\n\n<!-- intro -->\n##### JSON:\n<!-- request JSON -->\n\n```json\nPOST /search\n{\n \"table\": \"books\",\n \"query\": { \"match\": { \"content\": \"and first\" } },\n \"highlight\":\n {\n \"limits_per_field\": false,\n\t\t\"fields\":\n\t\t{\n\t\t\t\"content\" : { \"limit\": 50 }\n\t\t}\n }\n}\n```\n<!-- request PHP -->\n\n```php\n$index->setName('books');\n$bool = new \\Manticoresearch\\Query\\BoolQuery();\n$bool->must(new \\Manticoresearch\\Query\\Match(['query' => 'and first'], 'content'));\n\n$results = $index->search($bool)->highlight(['content'=>['limit'=>50]],['limits_per_field'=>false])->get();\nforeach($results as $doc)\n{\n echo 'Document: '.$doc->getId().\"\\n\";\n foreach($doc->getData() as $field=>$value)\n {\n echo $field.' : '.$value.\"\\n\";\n }\n foreach($doc->getHighlight() as $field=>$snippets)\n {\n echo \"Highlight for \".$field.\":\\n\";\n foreach($snippets as $snippet)\n {\n echo \"- \".$snippet.\"\\n\";\n }\n }\n}\n```\n<!-- response PHP -->\n```php\nDocument: 1\ntitle : Books one\ncontent : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.\nHighlight for content:\n- gestured the other robots away <b>and</b> entered itself. The door closed\n```\n<!-- request Python -->\n``` python\nres =searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"content\":\"and first\"}},\"highlight\":{\"fields\":{\"content\":{\"limit\":50}},\"limits_per_field\":False}})\n```\n<!-- response Python -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 1597,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' gestured the other robots away <b>and</b> entered itself. The door closed']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n\n```\n\n<!-- request Python-asyncio -->\n``` python\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"content\":\"and first\"}},\"highlight\":{\"fields\":{\"content\":{\"limit\":50}},\"limits_per_field\":False}})\n```\n<!-- response Python-asyncio -->\n``` python\n{'aggregations': None,\n 'hits': {'hits': [{u'_id': u'1',\n u'_score': 1597,\n u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',\n u'title': u'Books one'},\n u'highlight': {u'content': [u' gestured the other robots away <b>and</b> entered itself. The door closed']}}],\n 'max_score': None,\n 'total': 1},\n 'profile': None,\n 'timed_out': False,\n 'took': 0}\n\n```\n\n<!-- request Javascript -->\n``` javascript\nres = await searchApi.search({\"table\":\"books\",\"query\":{\"match\":{\"content\":\"and first\"}},\"highlight\":{\"fields\":{\"content\":{\"limit\":50}},\"limits_per_field\":false}});\n```\n<!-- response Javascript -->\n``` javascript\n{\"took\":0,\"timed_out\":false,\"hits\":{\"total\":1,\"hits\":[{\"_id\": 1,\"_score\":1597,\"_source\":{\"title\":\"Books one\",\"content\":\"They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. \"},\"highlight\":{\"content\":[\" gestured the other robots away <b>and</b> entered itself. The door closed\"]}}]}}\n\n```\n<!-- intro -->\n##### Java:\n\n<!-- request Java -->\n\n```java\nsearchRequest = new SearchRequest();\nsearchRequest.setIndex(\"books\");\nquery = new HashMap<String,Object>();\nquery.put(\"match\",new HashMap<String,Object>(){{\n put(\"*\",\"one|robots\");\n}});\nsearchRequest.setQuery(query);\nhighlight = new HashMap<String,Object>(){{\n put(\"limits_per_field\",0);\n put(\"fields\",new HashMap<String,Object>(){{\n put(\"content\",new HashMap<String,Object>(){{\n put(\"limit\",50);\n }});\n }}\n );\n}};\nsearchRequest.setHighlight(highlight);\nsearchResponse = searchApi.search(searchRequest);\n```\n\n<!-- intro -->\n##### C#:\n\n<!-- request C# -->\n\n```clike\nvar searchRequest = new SearchRequest(\"books\");\nsearchRequest.FulltextFilter = new MatchFilter(\"*\", \"one|robots\");\nvar highlight = new Highlight();\nhighlight.LimitsPerField = 0;\nvar highlightField = new HighlightField(\"title\");\nhighlight.Fields = new List<Object> {highlightField};\nsearchRequest.Highlight = highlight;\nvar searchResponse = searchApi.Search(searchRequest);\n```\n\n<!-- intro -->\n##### Rust:\n\n<!-- request Rust -->\n\n```rust\nlet match_filter = HashMap::new();\nmatch_filter.insert(\"*\".to_string(), \"one|robots\".to_string());\nlet query = SearchQuery {\n match: Some(serde_json::json!(match_filter).into()),\n ..Default::default(),\n};\nlet highlight_fields [String; 1] = [\"title\".to_string()];\nlet highlight = Highlight {\n fields: Some(serde_json::json!(highlight_fields)),\n limit_per_field: Some(serde_json::json!(false)),\n ..Default::default(),\n};\n\nlet search_req = SearchRequest {\n table: \"books\".to_string(),\n query: Some(Box::new(query)),\n highlight: serde_json::json!(highlight),\n ..Default::default(),\n};\nlet search_res = search_api.search(search_req).await;\n```\n\n<!-- request TypeScript -->\n``` typescript\nres = await searchApi.search({\n index: 'test',\n query: {\n match: {\n *: 'Text 1'\n }\n },\n highlight: { limits_per_field: 0 }\n});\n```\n\n<!-- request Go -->\n``` go\nmatchClause := map[string]interface{} {\"*\": \"Text 1\"};\nquery := map[string]interface{} {\"match\": matchClause};\nsearchRequest.SetQuery(query);\nhighlight := manticoreclient.NewHighlight()\nhighlight.SetLimitsPerField(0)\nsearchRequest.SetHighlight(highlight)\nres, _, _ := apiClient.SearchAPI.Search(context.Background()).SearchRequest(*searchRequest).Execute()\n```\n<!-- end -->\n\n## CALL SNIPPETS\n\n<!-- example CALL SNIPPETS -->\n\nThe `CALL SNIPPETS` statement builds a snippet from provided data and query using specified table settings. It can't access built-in document storage, which is why it's recommended to use the [HIGHLIGHT() function](../Searching/Highlighting.md) instead.\n\nThe syntax is:\n\n```sql\nCALL SNIPPETS(data, table, query[, opt_value AS opt_name[, ...]])\n```\n\n#### data\n`data` serves as the source from which a snippet is extracted. It can either be a single string or a list of strings enclosed in curly brackets.\n#### table\n`table` refers to the name of the table that provides the text processing settings for snippet generation.\n#### query\n`query` is the full-text query used to build the snippets.\n#### opt_value and opt_name\n`opt_value` and `opt_name` represent the [snippet generation options](../Searching/Highlighting.md).\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\n```sql\nCALL SNIPPETS(('this is my document text','this is my another text'), 'forum', 'is text', 5 AS around, 200 AS limit);\n```\n<!-- response SQL -->\n```sql\n+----------------------------------------+\n| snippet |\n+----------------------------------------+\n| this <b>is</b> my document <b>text</b> |\n| this <b>is</b> my another <b>text</b> |\n+----------------------------------------+\n2 rows in set (0.02 sec)\n```\n\n<!-- end -->\n\nMost options are the same as in the [HIGHLIGHT() function](../Searching/Highlighting.md). There are, however, several options that can only be used with `CALL SNIPPETS`.\n\n<!-- example CALL SNIPPETS load files -->\nThe following options can be used to highlight text stored in separate files:\n\n#### load_files\nThis option, when enabled, treats the first argument as file names instead of data to extract snippets from. The specified files on the server side will be loaded for data. Up to [max_threads_per_query](../Server_settings/Searchd.md#max_threads_per_query) worker threads per request will be used to parallelize the work when this flag is enabled. Default is 0 (no limit). To distribute snippet generation between remote agents, invoke snippets generation in a distributed table containing only one(!) local agent and several remotes. The [snippets_file_prefix](../Creating_a_table/Creating_a_distributed_table/Remote_tables.md#snippets_file_prefix) option is used to generate the final file name. For example, when searchd is configured with `snippets_file_prefix = /var/data_` and `text.txt` is provided as a file name, snippets will be generated from the content of `/var/data_text.txt`.\n\n#### load_files_scattered\nThis option only works with distributed snippets generation with remote agents. Source files for snippet generation can be distributed among different agents, and the main server will merge all non-erroneous results. For example, if one agent of the distributed table has `file1.txt`, another agent has `file2.txt`, and you use `CALL SNIPPETS` with both of these files, searchd will merge agent results, so you will get results from both `file1.txt` and `file2.txt`. Default is 0.\n\nIf the `load_files` option is also enabled, the request will return an error if any of the files is not available anywhere. Otherwise (if `load_files` is not enabled), it will return empty strings for all absent files. Searchd does not pass this flag to agents, so agents do not generate a critical error if the file does not exist. If you want to be sure that all source files are loaded, set both `load_files_scattered` and `load_files` to 1. If the absence of some source files on some agent is not critical, set only `load_files_scattered` to 1.\n\n<!-- intro -->\n##### SQL:\n<!-- request SQL -->\n\n```sql\nCALL SNIPPETS(('data/doc1.txt','data/doc2.txt'), 'forum', 'is text', 1 AS load_files);\n```\n\n<!-- response SQL -->\n```\n+----------------------------------------+\n| snippet |\n+----------------------------------------+\n| this <b>is</b> my document <b>text</b> |\n| this <b>is</b> my another <b>text</b> |\n+----------------------------------------+\n2 rows in set (0.02 sec)\n```\n\n<!-- end -->\n<!-- proofread -->\n\n",
  84. "updated_at": 1768530797,
  85. "source_md5": "447d7a6fa5c7ad5e0f732f5990e723e5"
  86. }
  87. }