Wydaje się to tak proste, że jestem przekonany, że muszę coś przeoczyć. Nie można ustalić, jak wykonać następujące czynności w Lucene:Wyszukiwane hasło Sitecore Lucene z dopasowaniem spacji to samo słowo bez przestrzeni
Problem
- szukam nazw miejscowości.
- Mam pole o nazwie
Name
- Jest za pomocą
Lucene.Net.Analysis.Standard.StandardAnalyzer
- Jest
TOKENIZED
- Wartość
Name
zawiera 1 miejsca w wartość:halong bay
. - Wyszukiwane hasło może, ale nie musi, zawierać dodatkowe miejsce z powodu odmiennych kulturowo pisowni lub prawdziwych błędów w pisowni. Na przykład.
ha long bay
zamiasthalong bay
. - Jeśli użyję terminu
halong bay
, otrzymam trafienie. - Jeśli użyję terminu
ha long bay
, nie otrzymam trafienia.
Próba rozwiązania
Oto kod używam budować mój orzecznik przy użyciu LINQ do Lucene z Sitecore:
var searchContext = ContentSearchManager.GetIndex("my_index").CreateSearchContext();
var term = "ha long bay";
var predicate = PredicateBuilder.Create<MySearchResultItemClass>(sri => sri.Name == term);
var results = searchContext.GetQueryable<MySearchResultItemClass>().Where(predicate);
Próbowałem również rozmytej mecz używając rozszerzenia .Like()
:
var predicate = PredicateBuilder.Create<MySearchResultItemClass>(sri => sri.Like(term));
To również nie daje wyników dla ha long bay
.
Jak skonfigurować Lucene w Sitecore wrócić trafienie dla obu halong bay
i ha long bay
wyszukiwanych haseł, najlepiej bez konieczności robić niczego wyjątkowego z terminem wejścia (np odpędzania przestrzeń, dodając symbole wieloznaczne, itp)?
Uwaga: zdaję sobie sprawę, że pozwoliłoby to na wygenerowanie trafienia o nazwie h a l o n g b a y
, ale nie sądzę, że mam z tym problem.
Dla pisowni zwrotów to często zamiast używać synonimy uzyskania logiki wyszukiwania do pokrycia wszystkich baz. Zajrzyj do tego wpisu, aby skonfigurować go w Sitecore. Może warto się zastanowić, jeśli masz więcej tego typu scenariuszy - http://firebreaksice.com/sitecore-synonym-search-with-lucene/ –
Dzięki za informacje o synonimach. Mogę to zaimplementować dla innych typów wyszukiwań. Jednak moim zdaniem nie jest to synonim. Jest to to samo słowo, ale z dodanymi białymi znakami. Być może jestem pedantyczny, ale powodem, dla którego mam synonimy, jest określenie całkowicie różnych słów, które nie mają nic wspólnego matematycznie, chociaż mają to samo znaczenie np. "Szybki" i "szybki" mają zero wspólnych liter. – theyetiman