-
-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Examine Facets proposal #310
Comments
Wow @nikcio 🤩 Good work on this proposal :) From a user point of view, I also like the approach 2 the most, but it requires more of the implementations. Sorry for my lack of knowledge, but in what case will |
@bergmania in Apache Lucene Faceted Search User's Guide there's written the following under
So it's possible to use this feature to get floating values. I'm not quite sure myself excatly how this is configured and used so I mostly just based the value type off the FacetResult type from the Lucene.Net.Facet package because it's the output of the different facet readers in Lucene.NET. |
@Shazwazza I've created some PR's that could implement this proposal and add some great functionality / Documentation to Examine. Please let me know if I can do anything to help the PR's along. PRs: |
@nikcio Sorry to keep you waiting on this one, I have all of these starred in my inbox and will get to them soon, just a bit swamped this week. |
Added support for efficient deep paging (SearchAfter) for faceted and non faceted search #321. |
@nikcio I started having a look through all this yesterday and so far all I can say is what an amazing job you've done so far. I'll keep reviewing over this week and we can determine if there are any tweaks necessary. @nzdev also thanks a ton for your recent PRs and help. Hopefully can get this all merged in for xmas/NY and get what will most likely be a new major release out. |
WIP https://github.com/nzdev/Examine/tree/v3/feature/facet-taxonomy Facet Taxonomy Index support. Needed for Hierarchical facets. Also is something like 20%-25% faster according to Lucene.Net docs. |
Has there been an update on this? |
Status: Here is how I see the status of the Examine repo. What do you think @Shazwazza and @nzdev? Merged PRs (Release/4.0)
Needs to be merged from the Release/3.0 branch - This is done in #345Still needs to be merged into Release/4.0
Still needs to be done[This list is based on #345 being merged into The massive amount of work that has been going on have created some warnings in the project where some are more important than others. Here is a run down of the ones I think we should look at before a stable 4.0 release.
Other PRs that could properly come in another future release:
Stale PRs?Preview/Alpha/Beta releaseI think the best way to get some kind of feel of what still needs to be done is only possible by making an early release and hear around the community for people to test it out. - This can be done when the current PRs in the "Still needs to be merged into Release/4.0" and #345 are merged in. @Shazwazza |
I'm wondering if the facetconfig class could be abstracted away by setting hierarchy/ multi facets on the index fields instead |
Just to keep this thread continuous also see #345 (comment) (From @nzdev )
|
If possible I think it would be great if the support for Spatial API #328 is included in v4 as well. Something we could have used in a recent project, is faceted search, but where one of the facets is search on items within a distance, e.g. 10, 20, .. or 100 km. It that case I guess facets would be combined with spatial search. In this specific project we used something like this to combine in with the existing (filtered) query.
|
I think for now it would make sense to merge the pr that helps with V3 compatibility and then release a v4 as it's already a big change. After that it's possible to introduce another v4.x release with the other APIs for filtering, function queries, facet drill down and spatial. |
Would it be possible to have a Beta or RC build of a release with Facets feature of v3/v4? |
Remaining tasks
|
@nzdev + @nikcio the build for a potential beta is here https://github.com/Shazwazza/Examine/actions/runs/6165490399 If anyone has time, the artifacts have the created Nuget package, would be awesome if someone could test consuming that locally before I publish it to nuget.org? |
Works for me |
@Shazwazza Let's get the beast out there. I don't have time myself right now to test it but if it works for @nzdev that should be good enough to release the beta 🚀 |
Hi @Shazwazza . Can you please publish the beta to Nuget. |
Yeah for sure, sorry it's been a hectic month 😕 will get it out tomorrow. Thanks so much for pushing this along and all your support. |
@Shazwazza any update on this? 😊 we would love to test this further and we have potential projects where facets would be useful, both in terms of commerce or regular Umbraco content. |
Just getting betas out now, just pushed 3.2.0-beta https://github.com/Shazwazza/Examine/releases/tag/v3.2.0-beta.9 |
And this one out now too https://github.com/Shazwazza/Examine/releases/tag/v4.0.0-beta.1 |
I'm just trying to get the docfx build running against the release/v4.0 branch but it is failing which I think is due to having attributes on things that cannot be inherited, but we have a lot of so its a bit hard to go through them all. I've found a few that cannot inherit so will keep at it. I didn't want to Tweet the releases until the docs were up. |
Keeps failing with
see https://github.com/Shazwazza/Examine/actions/runs/6672776075/job/18137309467 |
Fixed on #356 @Shazwazza |
I've raised a few prs that provide abstractions for the rest of the faceting feature set. |
What is blocking this feature currently from being released? |
Nothing is blocking this, it is already released. I will close this proposal task. There's even docs for it https://shazwazza.github.io/Examine/articles/configuration.html#facets-configuration. Use the latest version of Examine for this functionality. |
Examine Facets proposal
What is faceted search?
Faceted search is a technique that involves augmenting traditional search techniques with a faceted navigation system, allowing users to narrow down search results by applying multiple filters based on faceted classification of the items. It is sometimes referred to as a parametric search technique. A faceted classification system classifies each information element along multiple explicit dimensions, called facets, enabling the classifications to be accessed and ordered in multiple ways rather than in a single, pre-determined, taxonomic order. (Source)
Description
This proposal is on the implementation of faceted search in Examine. The proposal is mostly based on finding reasonable interface abstractions the best approach for building the feature and less on specific implementation details.
Previous implementation
Facets are available for Examine when targeting .NET framework via the Examine.Facets package by Callum Whyte. This proposal is based on the implementation of that package.
Motivation
I'm currently working on a project which would have a great use for Examine facets.
Approach
1. Externalize the Faceting features
The first approach is to externalize the Faceting features to a separate Nuget package in the same way Examine.Facets works a POC of this approach can be seen here: POC: Examine.Facets
2. Internalize the Faceting features (I think this is the best approach)
The second approach is to make faceting available directly in the existing
Examine
package and existing classes this would make it possible to avoid creating the following implementations and instead add the features to the existing classes:This approach, therefore, allows the default searcher to do a faceted search and this will lower the barrier to entry because a developer wouldn't have to register a separate searcher and explicitly use this searcher for faceted searching. As seen in this example:
Example 1 (From the existing Examine.Facets package by Callum)
Example 2 (From a test in the POC)
Example source
Structure
Bases
Searching
Searching results
Example facet result
Extensions
Types of facets
Sources of information about Lucene's facet search are:
String Facet
Allows for counting the documents that share the same string value.
New
FieldDefinitionTypes
:FacetFullText
FacetFullTextSortable
Extends the existing
FullText
andFullTextSortable
type and adds the requiredSortedSetDocValuesFacetField
to the indexed document. Without this field,SortedSetDocValuesFacetCounts
will not work.New query methods
On
IQuery
New
IFacetField
Facets config / New index methods - Optional addition. Properly not the most used feature
FacetsConfig
allows for setting some values in the index which are useful for faceting API docsOn
LuceneIndexOptions
This will make it possible to set the facet configuration on the specific index and reuse it when searching.
Methods to change the field used when reading facets (default is
$facets
which is where all facet values are indexed ifFacetsConfig.SetIndexFieldName(dimName, indexFieldName)
is not called.):See
IFacetQueryField
(It's not possible to specify the reading field in range facets)This will make it possible to set the faceting field per facet field giving the most flexibility when composing a query,
Note: The
FacetConfig
will also need to be available at search time in the searchExecutor to be used in the constructor when using TaxonomyNumeric Range Facet
Used with numbers to build range facets. For example, it would group documents of the same price range.
Double Range
New
FieldDefinitionTypes
:FacetDouble
FacetFloat
Extends the existing
Double
andFloat
type and adds the requiredDoubleDocValuesField
andSingleDocValuesField
respectively, aswell as theSortedSetDocValuesFacetField
to enable string like faceting, to the indexed document. Without the fields,DoubleDocValuesField
andSingleDocValuesField
faceting will not work.New query methods
On
IQuery
New
IFacetField
Long Range / Numeric range
New
FieldDefinitionTypes
:FacetInt
FacetLong
FacetDateTime
FacetDateYear
FacetDateMonth
FacetDateDay
FacetDateHour
FacetDateMinute
Extends the existing types and adds the required
NumericDocValuesField
, aswell as theSortedSetDocValuesFacetField
to enable string like faceting, to the indexed document. Without the fields,NumericDocValuesField
faceting will not work.New query methods
On
IQuery
New
IFacetField
Taxonomy Facet
Doing Taxonomy requires using a speciffic writer (
DirectoryTaxonomyWriter
) and is therefore out of the scope of this proposal.See more at: https://norconex.com/facets-with-lucene/
What now
The text was updated successfully, but these errors were encountered: