Umbraco Lucene поиск автозаполнения

Как мне изменить поиск, чтобы иметь возможность поразить мою строку поиска?

У меня есть переменные со следующими значениями:

fieldName: nodeName
searchString: des

Я хочу, чтобы можно было найти имя узла по любым непрерывным символам в нем: например, найти Esa selects Ariane 6 basic design введя design,

Мой текущий поиск построен как:

 var searchCriteria = SearchProvider.CreateSearchCriteria(BooleanOperation.Or);

 var luceneString = string.Format("{0}:", fieldName);
 luceneString += "(+" + searchString.Replace(" ", " +") + ")^10 ";
 luceneString += string.Format("{0}:{1}", fieldName, searchString);
 var rawQuery = searchCriteria.RawQuery(luceneString).Field(fieldName, searchString.Fuzzy(0.8f));

Мое изучение экзамена:

<add name="AutoCompleteLookupIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
           supportUnpublished="true"
           supportProtected="true"
          analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" />

1 ответ

Решение

Вы, вероятно, должны начать гораздо проще, чем это. Вам нужно построить следующие запросы, когда пользователь вводит в поле:

NodeName: д *

NODENAME: де *

NODENAME: дез *

NODENAME: Дези *

и так далее.

Если вы хотите выполнить поиск по нескольким полям, создайте следующие запросы:

имя_узла: d * bodyText: d *

имя_узла: de * bodyText: de *

имя узла: des * bodyText: des *

имя_узла: деси * bodyText: деси *

Это выполнит поиск ИЛИ, поиск в обоих необязательных полях. Добавление + перед nodeName сделает это соответствие nodeName обязательно, но bodyText необязательно, например:

+ имя_узла: d * bodyText: d *

Если пользователь указывает более одного термина, используйте регулярное выражение для очистки входных данных (удалите все не буквенные цифры), разделите строку на основе пробелов и создайте следующее:

имя_узла: графический * имя_узла: деси * текст: текст * текст * текст: текст *

Или делая nodeName обязательный:

+ (имя узла: графика * имя узла: деси *) bodyText: графика * bodyText: деси *

Другие вопросы по тегам