Lucene.NET can't find some words when searching?

91 Views Asked by At

Lucene.NET can't find some words when searching?
for example "on"

Below is a search for Lucene using the StandardAnalyzer.
Name of the field to search "LcnKey"

LcnKeys = "on lining brake sv"

Let's split the search clause to create a string[]

if keyword="linin brak" it will return the result.
if keyword="linin brak on" it does not return the result.

var searchTerms = keyword.Split(' ').Where(x => !string.IsNullOrEmpty(x)).ToArray();

BooleanQuery lcnKeyQuery = new BooleanQuery();

foreach (var lcnKey in searchTerms)
{
    if (lcnKey.Length <= 3)
        lcnKeyQuery.Add(new TermQuery(new Term("LcnKeys", $"{lcnKey}")), Occur.MUST);
    else
        lcnKeyQuery.Add(new WildcardQuery(new Term("LcnKeys", $"*{lcnKey}*")), Occur.MUST);
}

var scoreDocs = indexSearcher.Search(lcnKeyQuery, 1000).ScoreDocs;

lcnKeyQuery={(+LcnKeys:on+LcnKeys:*brak* +LcnKeys:*linin*)} => this query does not find the relevant row
lcnKeyQuery={(+LcnKeys:sv+LcnKeys:*brak* +LcnKeys:*linin*)} => this query finds the relevant row

0

There are 0 best solutions below