message: more examples to explain default field handling
diff: // # Json field example
  //
  // This example shows how the json field can be used
  -// to make tantivy partially schemaless.
  +// to make tantivy partially schemaless by setting it as
  +// default query parser field.
  use tantivy::collector::{Count, TopDocs};
  use tantivy::query::QueryParser;
  @@ -10,10 +11,6 @@ use tantivy::Index;
  fn main() -> tantivy::Result<()> {
  // # Defining the schema
  - //
  - // We need two fields:
  - // - a timestamp
  - // - a json object field
  let mut schema_builder = Schema::builder();
  schema_builder.add_date_field("timestamp", FAST | STORED);
  let event_type = schema_builder.add_text_field("event_type", STRING | STORED);
  @@ -43,7 +40,8 @@ fn main() -> tantivy::Result<()> {
  "attributes": {
  "target": "submit-button",
  "cart": {"product_id": 133},
  - "description": "das keyboard"
  + "description": "das keyboard",
  + "event_type": "holiday-sale"
  }
  }"#,
  )?;
  @@ -53,6 +51,7 @@ fn main() -> tantivy::Result<()> {
  let reader = index.reader()?;
  let searcher = reader.searcher();
  + // # Default fields: event_type and attributes
  let query_parser = QueryParser::for_index(&index, vec![event_type, attributes]);
  {
  let query = query_parser.parse_query("target:submit-button")?;
  @@ -70,10 +69,38 @@ fn main() -> tantivy::Result<()> {
  assert_eq!(count_docs, 1);
  }
  {
  - let query = query_parser
  - .parse_query("event_type:click AND cart.product_id:133")
  - .unwrap();
  - let hits = searcher.search(&*query, &TopDocs::with_limit(2)).unwrap();
  + let query = query_parser.parse_query("click AND cart.product_id:133")?;
  + let hits = searcher.search(&*query, &TopDocs::with_limit(2))?;
  + assert_eq!(hits.len(), 1);
  + }
  + {
  + // The default json fields need to be prefixed by the path
  + let query = query_parser.parse_query("click AND 133")?;
  + let hits = searcher.search(&*query, &TopDocs::with_limit(2))?;
  + assert_eq!(hits.len(), 0);
  + }
  + // ## Default json fields are ignored if they collide with the schema
  + {
  + let query = query_parser.parse_query("holiday-sale")?;
  + let hits = searcher.search(&*query, &TopDocs::with_limit(2))?;
  + assert_eq!(hits.len(), 0);
  + }
  + {
  + let query = query_parser.parse_query("event_type:holiday-sale")?;
  + let hits = searcher.search(&*query, &TopDocs::with_limit(2))?;
  + assert_eq!(hits.len(), 0);
  + }
  + // # Query via full attribute path
  + {
  + // This only searches in our schema's `event_type` field
  + let query = query_parser.parse_query("event_type:click")?;
  + let hits = searcher.search(&*query, &TopDocs::with_limit(2))?;
  + assert_eq!(hits.len(), 2);
  + }
  + {
  + // Default json fields can still be accessed by full path
  + let query = query_parser.parse_query("attributes.event_type:holiday-sale")?;
  + let hits = searcher.search(&*query, &TopDocs::with_limit(2))?;
  assert_eq!(hits.len(), 1);
  }
  Ok(())
  