75_Changing_similarities.asciidoc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. [[changing-similarities]]
  2. === 更改相似度
  3. 相似度算法可以按字段指定,((("relevance", "controlling", "changing similarities")))((("similarity algorithms", "changing on a per-field basis")))只需在映射中为不同字段选定即可:((("mapping (types)", "specifying similarity algorithm")))
  4. [source,json]
  5. ------------------------------
  6. PUT /my_index
  7. {
  8. "mappings": {
  9. "doc": {
  10. "properties": {
  11. "title": {
  12. "type": "string",
  13. "similarity": "BM25" <1>
  14. },
  15. "body": {
  16. "type": "string",
  17. "similarity": "default" <2>
  18. }
  19. }
  20. }
  21. }
  22. ------------------------------
  23. <1> `title` 字段使用 BM25 相似度算法。
  24. <2> `body` 字段用默认相似度算法(参见 <<practical-scoring-function,实用评分函数>>)。
  25. 目前,Elasticsearch 不支持更改已有字段的相似度算法 `similarity` 映射,只能通过为数据重新建立索引来达到目的。
  26. ==== 配置 BM25
  27. 配置相似度算法和配置分析器很相似,((("similarity algorithms", "configuring custom similarities")))((("BM25", "configuring")))自定义相似度算法可以在创建索引时指定,例如:
  28. [source,json]
  29. ------------------------------
  30. PUT /my_index
  31. {
  32. "settings": {
  33. "similarity": {
  34. "my_bm25": { <1>
  35. "type": "BM25",
  36. "b": 0 <2>
  37. }
  38. }
  39. },
  40. "mappings": {
  41. "doc": {
  42. "properties": {
  43. "title": {
  44. "type": "string",
  45. "similarity": "my_bm25" <3>
  46. },
  47. "body": {
  48. "type": "string",
  49. "similarity": "BM25" <4>
  50. }
  51. }
  52. }
  53. }
  54. }
  55. ------------------------------
  56. <1> 创建一个基于内置 `BM25` ,名为 `my_bm25` 的自定义相似度算法。
  57. <2> 禁用字段长度规范化(field-length normalization)。参见 <<bm25-tunability,调试 BM25>> 。
  58. <3> `title` 字段使用自定义相似度算法 `my_bm25` 。
  59. <4> 字段 `body` 使用内置相似度算法 `BM25` 。
  60. TIP: 自定义的相似度算法可以通过关闭索引,更新索引设置,开启索引这个过程进行更新。这样可以无须重建索引又能试验不同的相似度算法配置。