Я хочу сделать такой запрос: «банановая яблочная вишня» на поле «фрукты».Результаты с точным совпадением
Все фрукты в десертах должно быть в запросе, но не все фрукты в запросе должно быть в десертах ..
Вот пример ..
ИМЯ ФРУКТЫ
Dessert1 банан яблоко OK (мы получили банан и яблоко в запросе)
Dessert2 вишня яблоко банан OK (порядок не имеет значения)
Dessert3 вишня яблочная банановая дыня НЕТ (в нашем случае отсутствует дыня)
public class ArrayStringFieldBridge implements TwoWayFieldBridge{
@Override
public Object get(String name, Document document) {
IndexableField[] fields = document.getFields(name);
String[] values = new String[fields.length];
for (int i=0; i<fields.length; i++) {
values[i] = fields[i].stringValue();
}
return values;
}
@Override
public String objectToString(Object value) {
return StringUtils.join((String[])value, " ");
}
@Override
public void set(String name, Object value, Document document, LuceneOptions luceneOptions) {
String newString = StringUtils.join((String[])value, " ");
Field field = new Field(name, newString, luceneOptions.getStore(), luceneOptions.getIndex(), luceneOptions.getTermVector());
field.setBoost(luceneOptions.getBoost());
document.add(field);
}
}
@Indexed
@AnalyzerDef(name = "customanalyzer",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class))
public class Dessert {
@Analyzer(definition="customanalyzer")
@Field(name = "equipment", index=Index.YES, analyze = Analyze.YES, store=Store.YES)
@FieldBridge(impl=ArrayStringFieldBridge.class)
public String[] fruits = new String[]{};
}
Даже если вы не используете спящий режим-поиска, каждые предложения о теории для обработки, что было бы здорово ... Спасибо