Позвольте Lucene включать пробелы в термин для точного совпадения

Код вопроса в этой строке:

newPtr = &dep;

Вы должны изменить его на

*newPtr = dep;

, поскольку dep определено в буфере стека, после выполнения функции generateProcessDeparture, буфер стека будет перезаписан.

7
задан Joe Doyle 16 February 2010 в 20:19
поделиться

6 ответов

Можно использовать другой анализатор при поиске, чем тот, с которым Вы создали индекс.

Попытайтесь использовать KeywordAnalyzer при поиске. Это создаст единственный маркер строки поиска, которая является, вероятно, что Вы ищете.

4
ответ дан 6 December 2019 в 08:17
поделиться

Я предполагаю здесь - делает exactMask добавить кавычки вокруг строки? Необходимо просто использовать строку "грузовик Mercedes", не управляя им.

new TermQuery(new Term("companyName", "mercedes trucks"));
0
ответ дан 6 December 2019 в 08:17
поделиться

Вы рассмотрели использование PhraseQuery? Поле должно не маркироваться? Я верю немаркируемый, для идентификаторов и т.д. а не для полей, имеющих несколько слов как их содержание.

0
ответ дан 6 December 2019 в 08:17
поделиться

Даже у меня такая же проблема. Чтобы избавиться от этой проблемы, необходимо сделать следующее. 1) При добавлении значения поля в документ удалите пробелы между ними. 2) Сделайте значение поля в нижнем регистре. 3) Сделайте поисковый текст строчными буквами. 4) Уберите пробелы в поисковом тексте. С уважением ~ шеф

-1
ответ дан 6 December 2019 в 08:17
поделиться

Используйте PhraseQuery следующим образом:

//create the query objects
BooleanQuery query = new BooleanQuery();
PhraseQuery q2 = new PhraseQuery();
//grab the search terms from the query string
string[] str = Sitecore.Context.Request.QueryString[BRAND_TERM].Split(' ');
//build the query
foreach(string word in str)
{
  //brand is the field I'm searching in
  q2.Add(new Term("brand", word.ToLower()));
}

//finally, add it to the BooleanQuery object
query.Add(q2, BooleanClause.Occur.MUST);

//Don't forget to run the query
Hits hits = searcher.Search(query);

Надеюсь, это поможет!

9
ответ дан 6 December 2019 в 08:17
поделиться

Возможно, замените:

mercedes trucks 

на

mercedes?trucks

Работает для меня.

10
ответ дан 6 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: