The UI is developed a ASP.NET Core MVC based solution with lots of configuration capabilities. The API layer is segregated to allow you to build your own UI on top of the solution i.e. React UI
A Services layer provide all the backend capabilities like classic Search, Semantic Search, Translation or Web search.
All UI experiences are driven by a single configuration file named config.json located in the root folder of the UI project.
Below screenshots of what the default User Interface looks like.
Note This vertical use Bing Search API. For Production use, ensure you prominently include a functional hyperlink to the Microsoft Privacy Statement.
For more informations, https://docs.microsoft.com/en-us/bing/search-apis/bing-web-search/use-display-requirements
As mentioned earlier the UI is highgly configurable.
config.json
The landing page is made of configurable Highlights/Insights structure. Each Insight is rendered as a tab, given your provide a method to invoke.
Highlights is a sequence of sections, similar to the parallax layout.
"LandingPage": {
"pageTitle": "DataScience Toolkit",
"path": "/Home/Search",
"WebFacet": false,
"Highlights": [
{
"id": "latest",
"enable": true,
"icon": "bi bi-bell-fill",
"Insights": [
{
"id": "livenews",
"enable": true,
"title": "Latest News",
"method": "Microsoft.News.FetchHomeNews",
"icon": "bi bi-bell-fill"
},
{
"id": "documents",
"enable": true,
"title": "Latest Documents",
"method": "Microsoft.Home.GetLatestDocuments",
"icon": "bi bi-file-earmark"
},
{
"id": "images",
"enable": true,
"title": "Latest Visuals",
"method": "Microsoft.Home.GetLatestImages",
"icon": "bi bi-files"
}
]
}
],
"Localizations": {
"en": {
"pageTitle": "Knowledge Mining",
"name": "Knowledge Mining",
"title": "Search across your data sources",
"placeHolder": "Search across your data sources..."
}
}
},
{
"id": "search",
"pageTitle": "Knowledge Mining - All",
"name": "All",
"title": "Search all data sources",
"enable": true,
"path": "/Home/Search",
"searchMethod": "Microsoft.All.Search",
"svgicon":"10834-icon-service-Search.svg",
"placeHolder": "Explore all data...",
"isSemanticCapable": true,
"enableOffcanvasNavigation": true,
"ResultsRenderings": [
{
"name": "allresults",
"title": "Search documents",
"fonticon": "bi bi-grid",
"isdefault": true,
"method": "Microsoft.All.UpdateResultsAsCard"
},
{
"name": "blank"
},
{
"name": "document",
"title": "Only search documents",
"fonticon": "bi bi-list",
"method": "Microsoft.All.UpdateResultsAsList",
"filter": "(document/embedded eq false)"
},
{
"name": "pages",
"title": "Only search document pages or slides",
"fonticon": "bi bi-files",
"method": "Microsoft.All.UpdateResultsAsCard",
"filter": "(document/embedded eq true)"
},
{
"name": "images",
"title": "Only search Images",
"fonticon": "bi bi-image",
"method": "Microsoft.Images.UpdateImagesResults",
"filter": "(document/embedded eq false and content_group eq 'Image')"
},
{
"name": "tables",
"title": "Only search extracted tables",
"fonticon": "bi bi-table",
"method": "Microsoft.Tables.UpdateTablesResults",
"filter": "(tables_count ge 1)"
}
]
}
The default Navigation configuration is available across all verticals including Bing.
It is driven by a json configuration file (wwwroot/config/search-facets.json)
[
{
"id": "energy",
"name": "Energy",
"type": "static",
"target": "fulltext",
"includeHomePage": true,
"values": [
{
"value": "Fossil",
"query": [ "Fossil Fuel", "Fossil Energy" ]
},
{
"value": "Wind",
"query": [ "Wind Farm", "Wind Turbine" ]
},
{
"value": "Solar"
},
{
"value": "Gas Natural"
}
]
},
{
"id": "keyphrases",
"name": "Key Phrases",
"type": "dynamic",
"target": "key_phrases"
},
{
"id": "sciencesstuff",
"name": "Sciences",
"type": "static",
"target": "key_phrases",
"includeHomePage": true,
"values": [
{
"value": "Physical Geology"
}
]
},
{
"id": "xr",
"name": "Realities",
"type": "static",
"target": "key_phrases",
"includeHomePage": true,
"values": [
{
"value": "Mixed Reality"
},
{
"value": "Augmented Reality"
},
{
"value": "Virtual Reality"
}
]
}
]
For the Live News, we use another configuration for navigration (wwwroot/config/news-facets.json)
{
"General News": [
{
"Id": "1",
"Source": "NY Times",
"URL": "https://www.nytimes.com/section/business",
"Language": "English",
"Country": "USA",
"RSSFeedURL": "https://rss.nytimes.com/services/xml/rss/nyt/Business.xml",
"includeHomePage": true
},
{
"Id": "5",
"Source": "CNN",
"URL": "https://edition.cnn.com/",
"Language": "English",
"Country": "USA",
"RSSFeedURL": "http://rss.cnn.com/rss/cnn_topstories.rss",
"includeHomePage": false
}
],
"European Institutions": [
{
"Id": "6",
"Source": "European Parlement",
"URL": "https://www.europarl.europa.eu",
"Language": "English",
"Country": "Europe",
"RSSFeedURL": "https://www.europarl.europa.eu/rss/doc/press-releases/en.xml",
"includeHomePage": false
}
],
"Automotive News": [
{
"Id": "2",
"Source": "Autonews",
"URL": "https://www.autonews.com/",
"Language": "English",
"Country": "USA",
"RSSFeedURL": "http://feeds.feedburner.com/autonews/BreakingNews",
"includeHomePage": false
}
]
}
A concept here is to include static filters a solution might need to drive exploration on key topics.
Dynamic filters are refiners in the classic Search world. They would include count and changed
Static filters are simply
The search filter is a single row container helping you accessing:
- Navigational
- Search results count
- Results Renderings
- Date filter
- Applied filters
- Export to Excel
- Search Options
You can configure the way results are rendered or filtered.
{
"name": "allresults",
"title": "Search documents",
"fonticon": "bi bi-grid",
"isdefault": true,
"method": "Microsoft.All.UpdateResultsAsCard"
}
Allow you to search documents/images,slides & pages based on their modified time.
Work in progress to export search results as CSV for Excel import.
Choose if you want your query to use the semantic search feature.
Learn about ACS Semantic Search
Feature | Description |
---|---|
Semantic re-ranking | Uses the context or semantic meaning of a query to compute a new relevance score over existing results. |
Semantic captions and highlights | Extracts sentences and phrases from a document that best summarize the content, with highlights over key passages for easy scanning. Captions that summarize a result are useful when individual content fields are too dense for the results page. Highlighted text elevates the most relevant terms and phrases so that users can quickly determine why a match was considered relevant. |
Semantic answers | An optional and additional substructure returned from a semantic query. It provides a direct answer to a query that looks like a question. It requires that a document have text with the characteristics of an answer. |
When enabled, each search query is translated to English before being sent to ACS. The Translation service is enabled by default during the data enrichment phase of the indexing.
When the spellcheck service is enabled by config.spellCheckEnabled and that the config.spellCheckProvider is set to "Bing", this feature will leverage Microsoft Bing to spell check your search query.
Make sure to review Microsoft Privacy Statement
You can add your own SpellChecking service. Review the KnowledgeServices project SpellChecking folder to evaluate how to create your own.
This setting is linked to the search suggestions. Each suggestion has an associated entity (search field) like Key Phrases or Organizations.
When enabled this setup will add the corresponding entity filter to the search query to restrict further potential matching documents or images.
Document details is a multitab panel to review a specific search results.
Full textual content extracted from the full document or as the result of an image OCR
Side by side translation...
The metadata presented here are indexed metadata.
The Metadata tab will also fetch all File Data to allow you to review all existing metadata available for indexing.
This panel will show all extracted tabular data of a page or slide.
On a document, this panel will show the first 100 pages or slides in a thumbnail view.
Whe you are detailing a page or slide, the source will preview the parent document.