Поиск по части слова, а не только по целому.

2,819 views
Skip to first unread message

Pashkevich Aleksandr

unread,
Mar 4, 2014, 10:24:23 AM3/4/14
to elastics...@googlegroups.com
Здравствуйте использую запрос вот такого плана. в Elastics 0.9
 $query = "curl -XGET 'http://localhost:9200/optovolt/catalog/_search?' -d '{".'

 "query": {
        "filtered" : {

            "query" : {
                "query_string" : {

                    "query" : "'TLV'"
                }
            }
}
    }
}
'."'";
Он ничего не выдаёт, хотя есть запись с "Наименованием"(это ключ в _source) TLV71728PDQNT
А когда запрос вот такого характера
$query = "curl -XGET 'http://localhost:9200/optovolt/catalog/_search?' -d '{".'

 "query": {
        "filtered" : {

            "query" : {
                "query_string" : {

                    "query" : "'TLV71728PDQNT'"
                }
            }
 }
    }
}
'."'";
То он понятное дело запись находит эту. Как-нибудь возможно модифицировать запрос чтобы он находил и по просто TLV эту запись и подобные?

Pashkevich Aleksandr

unread,
Mar 4, 2014, 10:37:31 AM3/4/14
to elastics...@googlegroups.com
Не включил смекалку прежде чем задавать вопрос, решилось всё очень просто. Обернул запрос звёздочками, но ещё один вопрос есть, а можно ли как-нибудь сделать чтобы искало только по одному параметру в source? Версия 0.9

вторник, 4 марта 2014 г., 17:24:23 UTC+2 пользователь Pashkevich Aleksandr написал:

Igor Motov

unread,
Mar 4, 2014, 10:40:00 AM3/4/14
to elastics...@googlegroups.com
Да, самый простой и медленный способ - искать TLV*, но можно еще использовать nGrams (http://stackoverflow.com/q/6467067/783043) или разбить слова по буквам и цифрам с помощью фильтра word-delimiter (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-word-delimiter-tokenfilter.html)

Чтобы искать только по source надо добавить это поле в запрос source:*TLV* 
Reply all
Reply to author
Forward
0 new messages