Как получавате резултати за заявки, които не съвпадат точно с индексирания текст с ElasticSearch?

Този низ е индексиран: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."

Моето запитване е: „Здравей свят. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Друг текст.

Когато стартирам заявката, не получавам резултати. Как мога да получа резултата, ако в заявката ми има малко "боклук"?

Използвам Django, Haystack и ElasticSearch.


person hekevintran    schedule 16.01.2013    source източник
comment
Това детектор за плагиатство ли е? Аз лично съм любопитен защо бихте направили точно съвпадение на текст + търсене на боклук :)   -  person Yuji 'Tomita' Tomita    schedule 16.01.2013
comment
Не е плагиатство, а случай на текст с много сходни форми с известна гъвкавост.   -  person hekevintran    schedule 16.01.2013


Отговори (2)


Ако използвате заявка за „съвпадение“ с оператора по подразбиране „или“, тогава ще получите попадения, където някоя от думите съвпадат, но попаденията, при които много от думите съвпадат, ще се класират над попаденията, където няколко от думите съвпадат.

http://www.elasticsearch.org/guide/reference/query-dsl/match-query.html

Но ако имате предвид, че искате да съвпаднете само с тази точна фраза, но да позволите допълнителен текст от двата края, не съм сигурен, че можете да направите точно това.

Един вариант, ако можете да облекчите изискването за точно съвпадение по фраза, би бил да анализирате документите (и заявката) с помощта на филтър за токени за шингли.

http://www.elasticsearch.org/guide/reference/index-modules/analysis/shingle-tokenfilter.html

Тогава заявка за съвпадение с оператор "или" ще работи с двойки, тройки, четворки и т.н. думи (в зависимост от конфигурацията на филтъра). Задаването на размера на плочките само на 2 или 3 би направило малко вероятно документ, съдържащ много от същите думи като заявката (случайно), да получи висок резултат.

Или можете да използвате заявка за фраза с помия (вижте долната част на страницата за заявка за съвпадение по-горе).

И двата подхода обаче биха позволили вмъквания, както и префикси/наставки.

person Andrew Clegg    schedule 17.01.2013
comment
Точното съвпадение по фраза не беше моята цел. Методите за заявка за съпоставяне и токен за шиндър изглеждат обещаващи. - person hekevintran; 18.01.2013

Elasticsearch има наистина мощен Още като тази заявка, която ви позволява за генериране на заявки въз основа на фрагменти от текст.

person imotov    schedule 16.01.2013