Как объединить префикс и нечеткий поиск в Solr 4.0

Синтаксис solr для нечеткого поиска:

q~n, где q — термин запроса, а n — расстояние Левенштейна (например, 1-3).

Синтаксис поиска по префиксу:

q*, где q — термин запроса, а * указывает на подстановочный знак.

Объединение обоих, например q~n* (с четным n=1), имеет побочный эффект, заключающийся в том, что почти все совпадает (по причине, которую мне еще предстоит выяснить).

Сочетание обоих, например q*~n (с четным n=1), имеет побочный эффект: запрос выполняется, поскольку это будет только поиск по префиксу.

В нашем случае использования нам нужно предложить предложения, основанные на исторических запросах, хранящихся в index. Этот шов также должен быть тем, что делает Google, когда вы вводите термин с ошибкой, и это отличное решение для предложений. Проблема в том, что мы можем либо предлагать предложения, начинающиеся с одного и того же индекса, либо некоторые с определенным расстоянием Левенштейна ‹= 3, что невозможно, когда речь идет о долгосрочных терминах.

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


person Macilias    schedule 21.01.2014    source источник


Ответы (2)


Не проверенное решение, вы думали об этом? q* OR q~1 например name:S* OR name: S~1 ,

Большой пример: name:Samson~3 OR name:Samson* возвращено: <str name="name">Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133</str></doc>

person Arun    schedule 21.01.2014
comment
Да, действительно, и приятно, что вы упомянули об этом и здесь, но, несмотря на то, что это шаг в правильном направлении, это не решение. - person Macilias; 21.01.2014

Я не пробовал это специально, но похоже, что вы можете делать то, что хотите, с помощью ComplexPhraseQueryParser.

Похоже, что ComplexPhraseQueryParser планируется распространять с 4.8, но пока вы можете получить плагин (в zip-файлах есть инструкции по установке) из Jira Solr. https://issues.apache.org/jira/browse/SOLR-1604

Здесь обсуждается использование расстояния. http://lucene.472066.n3.nabble.com/ComplexPhraseQueryParser-and-wildcards-td2742244.html

Я ожидаю, что с помощью ComplexPhraseQueryParser вы сможете выполнить запрос типа "q*"~n.

person a_hardin    schedule 01.04.2014