Skip to main content

Full Text Search using Entity Framework

I've been working on a project where I needed to implement full time search on one table. My current solution was based on SQL Server db and Entity Framework 6. I had two choices implement the full text search in C# or use the functionality available in SQL server, since the data was stored in SQL Server the obvious solution was to use the built in full text search.
How this works:
1. You need to activate and configure the full text search: Activate on the sql server table by using SSMS, and specify which columns are going to be included.
2. To perform a full text search in a T-SQL query you have the choice between 2 Boolean functions: Contains and Freetext or two functions that returns 2 columns tables. In my case I need a function that could be used in a where clause (Boolean), and decided to use 'Contains'. For more details about the difference between Freetext and contains have a look at this article.
3. I need to instruct EF6 to generate a particular T-SQL statement when I want to make a full text search on a particular column. Luckily there is a way to perform this in EF6, by using a custom interceptor (A class that implements:IDbCommandInterceptor). You can find below a link that describes one implementation, in my case I just made a small alteration to the code in the RewriteFullQuery function, where I change the value of the parameter to split a sentence into multiple word: "news paper" ==> '"news" AND "paper"'

Comments

Popular posts from this blog

Understanding Monte Carlo Simulation C#

This method has been introduced to resolve numerically complex physics problems, such as neutron diffusion, that were to complex for an analytical solution. This method is based on generating random values for parameters or inputs to explore the behaviour of complex systems, now this method is used in various domains like: Engineering, science and finance. These approaches tend to follow a particular pattern: 1- Define a domain of possible inputs. 2- Generate inputs randomly from the domain using a certain specified probability distribution. 3- Perform a deterministic computation using the inputs. 4- Aggregate the results of the individual computations into the final result. Here is an example of using Monte Carlo simulation to approximate the value of Pi: In this case we have 2 parameters x,y which defines a location in the plane (e.g The picture on the left). We will calculate the probability to have a point in the 1/4 Circle area, with a radius of 1. To calculate Pi we...

ScrolleViewer ComputedVerticalScrollBarVisibility Dependency Property

I recently came a cross a request where I had to show a WPF control only when the Vertical Delete repeated wordbar was visible, after looking at ScrollViewer on MSDN I found that it has a dependency property that indicates whether the vertical scrollbar is visible (a similar property exists for horizontal scrollbar): ComputedVerticalScrollBarVisibility Here is a sample XAML I using this property: < ScrollViewer VerticalScrollBarVisibility ="Auto" HorizontalScrollBarVisibility ="Auto">             < Button Command ="{ Binding Command}"                      Visibility ="{ Binding RelativeSource ={ RelativeSource FindAncestor , AncestorType ={x:Type ScrollViewer }}, Path = ComputedVerticalScrollBarVisibility }" />     </ ScrollViewer >