2017-01-26 13 views
0

Каковы преимущества не использования queryparser и использования фразы или запроса? Мне кажется, вы можете использовать queryparser для замены любого из них?Lucene: queryparser vs фраза или termquery

Например, если я хочу, чтобы искать точную фразу, я могу сделать:

String searchString = "\"word1 word2\""; 
QueryParser queryParser = new QueryParser(Version.LUCENE_46,"content", analyzer); 
Query query = queryParser.parse(searchString); 

или если я хочу найти 2 точки зрения, я могу сделать

String searchString = "word1* AND word2*"; 
QueryParser queryParser = new QueryParser(Version.LUCENE_46,"content", analyzer); 
Query query = queryParser.parse(searchString); 

В настоящее время, Я использую queryparser, и он работает для меня, но это правильный способ использования Lucene?

+1

QueryParser в порядке, пока это не так. Нет ничего плохого в использовании этого, но есть типы запросов, которые выходят за рамки возможностей QueryParser. – femtoRgon

ответ

0

Главный недостаток не используется QueryParser является следующее (это особенно в случае использования Solr/Elastic):

Когда вы создаете TermQuery, что-то вроде этого:

Query q = new TermQuery("text", "keyword") 

проблема будет что вам необходимо применять анализаторы/фильтры вручную. Скажем, пользовательские типы KeyWord, то если вы просто передадите его в TermQuery, вы ничего не найдете, если во время индексирования вы использовали нижний регистр. Конечно, нижняя шкала проста, но хотите ли вы применить все в коде для генерации/nramming и т. Д. И не полагаться на существующую функциональность из анализаторов/фильтров?

+0

, так что вы говорите, что лучше использовать QueryParser, потому что проще применять анализаторы/фильтры? – help

+0

@help, да. Как вы примените, например, к примеру? вручную будет делать некоторые звонки на условиях? – Mysterion