2015-09-25 5 views
1

Возьмите эту структуру, например:Как индексировать теги и запрашивать точные совпадения с этими тегами в lucene .net?

Имя: Джон

Хобби: танцы, подводное плавание, верховая езда, небо-дайвинг

Имя: Джейн

Хобби: мотоциклы, неба, танцы

Я заинтересован в индексировании и запросе этой информации. Важно то, что запрос должен быть точным соответствием с Хобби:

Так, в поисках «скай-дайвинг» должен вернуться как Джон и Джейн

Searching для "дайвинг" должен вернуть 0 результатов, так как точное совпадение не найдено.

Каким будет идеальный подход к индексированию и запросу, который я должен предпринять, чтобы правильно проиндексировать Хобби?

+2

Добавьте их как несколько значений в одно и то же поле. Разбирайте их перед загрузкой. – Paparazzi

+0

Спасибо @Frisbee, что сделал трюк! – gottalovedotnet

ответ

1

Добавьте их как несколько значений в одно и то же поле. Разбирайте их перед загрузкой.

1

Прошло некоторое время с тех пор, как я работал с Lucene, но предполагаю, что именно так Хобби хранится (разделение запятой + пробел), по индексу вы должны использовать анализатор шаблонов со следующим шаблоном ", \ s * ", и по запросу я не думаю, что требуется какая-то токенизация, вы можете просто передать запрос для этого поля как есть.

Это, конечно, самый простой случай. Если вы хотите начать обработку краев (обложки, пробелы в токенах), вам придется придерживаться совсем другого подхода.