You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucenenet.apache.org by Singaravelu R <si...@hotmail.com> on 2017/08/22 06:55:51 UTC

Wildcard Search with Special Characters "#" Not Working

Hello,

I’m using Lucene.Net 3.0.3.0 version in my website to search list of courses.
I have few courses which contains the special character “#” like, C#, C#.Net, etc.

But When I search with the term “C#” it showing 0 results.

I’m using StandardAnalyzer and MultiFieldQueryParser also allowing wildcard search (AllowLeadingWildcard = true).
Here is my code:
var analyzer = new StandardAnalyzer(Version.LUCENE_30, stopWords);
{
BooleanQuery query = new BooleanQuery();
var nameParser = new MultiFieldQueryParser(Version.LUCENE_30, new[] { "Column1", " Column2", " Column3" }, analyzer);
if (!string.IsNullOrEmpty(searchCriteria.CourseName))
{
query.Add(parseQuery(GetTerms(searchCriteria.CourseName.ReplaceDiacritics()), nameParser), Occur.MUST);
}
ScoreDoc[] hits = searcher.Search(query, null, hits_limit, Sort.RELEVANCE).ScoreDocs;
var results = _mapLuceneToDataList(hits, searcher);
analyzer.Close();
searcher.Dispose();
return results;
}

For indexing:
The word “C#” indexed and stored correctly.
doc.Add(new Field("Title", sampleData.CourseName, Field.Store.YES, Field.Index.ANALYZED));

Kindly let me know what I have to do to retrieve the result when I search with the term “C#”.

Thanks & Regards,
Singaravelu R

Re: Wildcard Search with Special Characters "#" Not Working

Posted by Itamar Syn-Hershko <it...@code972.com>.
You are using StandardAnalyzer but it removes those characters on indexing
and search. Use another analyzer e.g. WhitespaceAnalyzer.

On Aug 22, 2017 12:41, "Singaravelu R" <si...@hotmail.com> wrote:

> Hello,
>
> I’m using Lucene.Net 3.0.3.0 version in my website to search list of
> courses.
> I have few courses which contains the special character “#” like, C#,
> C#.Net, etc.
>
> But When I search with the term “C#” it showing 0 results.
>
> I’m using StandardAnalyzer and MultiFieldQueryParser also allowing
> wildcard search (AllowLeadingWildcard = true).
> Here is my code:
> var analyzer = new StandardAnalyzer(Version.LUCENE_30, stopWords);
> {
> BooleanQuery query = new BooleanQuery();
> var nameParser = new MultiFieldQueryParser(Version.LUCENE_30, new[] {
> "Column1", " Column2", " Column3" }, analyzer);
> if (!string.IsNullOrEmpty(searchCriteria.CourseName))
> {
> query.Add(parseQuery(GetTerms(searchCriteria.CourseName.ReplaceDiacritics()),
> nameParser), Occur.MUST);
> }
> ScoreDoc[] hits = searcher.Search(query, null, hits_limit,
> Sort.RELEVANCE).ScoreDocs;
> var results = _mapLuceneToDataList(hits, searcher);
> analyzer.Close();
> searcher.Dispose();
> return results;
> }
>
> For indexing:
> The word “C#” indexed and stored correctly.
> doc.Add(new Field("Title", sampleData.CourseName, Field.Store.YES,
> Field.Index.ANALYZED));
>
> Kindly let me know what I have to do to retrieve the result when I search
> with the term “C#”.
>
> Thanks & Regards,
> Singaravelu R
>