Как сделать частичные поиски слова в Lucene.NET?

GOTO похож на настольную дисковую пилу, чрезвычайно полезную, когда меры по надлежащей безопасности приняты.

я считаю его вредным, потому что большинство новичков теряет пальцы с обеими настольными дисковыми пилами и GOTOs.

существуют некоторые ситуации, где это - единственный путь к потоку управления, но тех ситуаций можно избежать.

9
задан JamieGaines 4 December 2009 в 03:59
поделиться

3 ответа

Попробуйте этот запрос:

parser.Parse(query.Keywords.ToLower() + "*")
14
ответ дан 4 December 2019 в 13:47
поделиться

Да, это можно сделать. Но ведущий подстановочный знак может привести к медленным запросам. См. Документацию . Кроме того, если вы индексируете всю строку (например, «Дейтон, Огайо») как отдельный токен, большинство запросов будут преобразованы в запросы с ведущими префиксами. Использование токенизатора, такого как StandardAnalyzer (который, я полагаю, вы уже используете), уменьшит потребность в ведущем подстановочном знаке.

Если вам не нужны ведущие префиксы по соображениям производительности, вы можете попробовать индексирование ngram. Таким образом, не будет никаких ведущих запросов с подстановочными знаками. Токенизатор ngram (при условии, что он имеет длину только 4) будет создавать токены для "Dayton Ohio" как "dayt", "ayto", "yton" и т. Д.

1
ответ дан 4 December 2019 в 13:47
поделиться

, это больше вопрос заполнения вашего индекса частичными словами. Вашему анализатору необходимо вводить частичные ключевые слова в индекс во время анализа (и, надеюсь, взвешивать их ниже, чем полные ключевые слова, как он это делает).

Деревья поиска индексов Lucene работают слева направо. если вы хотите выполнить поиск по середине ключевого слова, вы должны разбить его на части при анализе. проблема в том, что частичные ключевые слова обычно резко увеличивают размер индекса.

люди обычно используют действительно творческие анализаторы, которые разбивают слова на корневые слова (которые снимают префиксы и суффиксы).

погрузиться, чтобы глубже понять люцен. это хороший материал. : -)

0
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

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