npm package: @ngirl/nom-search
Description: Search query component with autocomplete
Author: Jeffrey Carpenter
Latest version: 0.2.9

# @ngirl/nom-search

A web component for providing search results capabilities via text input. 
Abstract data source back-ends can be used for modifying the query response 
result -- anything from a remote database to a locally cached JSON string can 
be used as a model.

NOTE(jeff): This module is still in its infancy. Most features are not yet
implemented.

## Features

- OpenSearch spec

# Reference Documents

1. [Google: Refine web searches](https://support.google.com/websearch/answer/2466433?hl=en&visit_id=0-636461295879658336-2651732407&rd=1)
1. [MongoDB: Free-Text Search](https://github.com/mongodb/mongo/tree/r3.4.10/src/mongo/db/fts)
1. <http://www.opensearch.org/Specifications/OpenSearch/1.1>
  - <https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md>
1. <http://ceos.org/document_management/Working_Groups/WGISS/Interest_Groups/OpenSearch/CEOS-OPENSEARCH-BP-V1.1-Final.pdf>
1. <https://eoxc.github.io/opensearch/>
1. <https://codepen.io/fielding/pen/Vbdppm>

- [Semantic UI: Search Settings](https://semantic-ui.com/modules/search.html#/settings)

- [jQuery Mobile API: Filterable Widget](http://demos.jquerymobile.com/1.4.5/filterable/)
  - [jQuery Mobile API: Autocomplete Widget - uses Filterable Widget](http://demos.jquerymobile.com/1.4.5/listview-autocomplete/)
  - [jQuery Mobile API: Remote Data Sources](http://demos.jquerymobile.com/1.4.5/listview-autocomplete-remote/)
    * `curl http://gd.geobytes.com/AutoCompleteCity?q=Fayetteville`

## Reference Query Results Response

<https://en.wikipedia.org/w/api.php?origin=*&action=opensearch&format=json&search=anita>

<https://naughty.localdev/search/suggestion/?q=anita&format=json&output=firefox>

- ![Wikipedia OpenSearch: Query Response Headers](./design/images/wikipedia_osearch-spec-res-headers.png)

- ![Wikipedia OpenSearch: Query GET Response Data](./design/images/wikipedia_osearch-spec-res-data.png)
  - [Wikipedia OpenSearch: Query GET Response Data](./design/data/wikipedia_osearch-spec-res-data.json)

- ![Naughty Girl OpenSearch: Query GET Response Headers](./design/images/ngirl_osearch-spec-res-headers-GET-req.png)

- ![Naughty Girl OpenSearch: Query GET Response Data](./design/images/ngirl_osearch-spec-res-data-GET-req.png)
  - [Naughty Girl OpenSearch: Query GET Response Data](./design/data/ngirl_osearch-spec-res-data-GET-req.json)

- [Naughty Girl OpenSearch: Query POST Response Data](./design/data/ngirl_osearch-spec-res-data-POST-req.json)

1. [OpenSearch Query Response data and headers](https://en.wikipedia.org/w/api.php?origin=*&action=opensearch&format=json&search=anita)

1. <https://naughty.localdev/opensearch.xml>

- Top-right header of site has search icon that transitions to a pull down 
search dialog, much like Fielding's design

![2017-12-09_avn.com-search-pulldown.png](./design/images/2017-12-09_avn.com-search-pulldown.png)

## See also

- `./design/code/gsearch`
  - This directory contains interesting snippet examples I stashed away of 
  Google's Search widget as I was casually browsing the source tree of Google's Android API documentation. 
  
  - `design/code/docs.js`
    - Absorb as much of this gem as possible; I have yet to see anything in 
    there that is not directly applicable for us.
    - The URL cleanup methods for consistent serialization and de-serialization
    of search and query data inside a HTTP GET request ought to be 120% 
    answered after we consume and implement these inside `nom-search` and 
    `./routes/search.js`. Yay!
    - These two methods ought to get us well upon our way: `buildResourceList` and `parseResourceQuery`.

# Projects Using nom-search

- [naughty.im](https://git.imbue.studio/ngirl/)