2012-04-18 2 views
0

У меня есть случай, в котором я хотел бы, чтобы соответствовать следующим образом:Solr Минимальное соответствие настройки

запрос: ABCD EFGH IJKL MNOP

После этого запроса подвергают Ngram токенизатор и каждое слово делится на 2-граммовые жетоны.

например) Запрос разделяется на,

AB, BC, CD, эф, фг, GH, IJ, Ю.К., Ы, тп, нет, оп

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

Я имею в виду, по умолчанию, когда какой-либо один токен, соответствующий слову, совпадает с индексированным документом, с mm = 1, этот индексный документ возвращается. И если я даю mm = 2, то любой токен из любых двух слов должен соответствовать индексированному документу, который будет возвращен.

Но я хочу: Вернуть документ только тогда, когда каждый знак «m» соответствует каждому значению mm = num of words.

Например) Я бы хотел, по крайней мере, 2 токена каждый из по крайней мере 3 слов для выбранного индекса.

Кажется, IndexSearcher от Lucene делает эту основную часть. Нужно ли мне менять код или любую другую конфигурацию, которая бы делала эти вещи?

Заранее спасибо ...

ответ

1

Это не совсем то, что вы просите, но я предполагаю, что ваш основной вопрос: «Как я могу гарантировать, что нечеткий поиск только вернуть вещи, которые«близко 'к исходному запросу? "

Синтаксис foo~.8 делает это - см. the docs. В принципе, .8 - мера расстояния редактирования (Левенштейна), деленная на длину слова.

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

+0

Ничего себе милый. Раньше я слышал о расстоянии Левенштейна. Спасибо за ваше ценное предложение. Я буду смотреть в него. – sriram

Смежные вопросы