Поиск Sphinx в Laravel

В процессе разработки веб-приложения на платформе Laravel 5.6, передо мной стала задача реализации полнотектового поиска. Было принято решение реализовывать его на поисковой машине Sphinx. Из Википедии:

Sphinx (англ. SQL Phrase Index) — система полнотекстового поиска, разработанная Андреем Аксёновым и распространяемая по лицензии GNU GPL. Отличительной особенностью является высокая скорость индексации и поиска, а также интеграция с существующими СУБД (MySQL, PostgreSQL) и API для распространённых языков веб-программирования (официально поддерживаются PHP, Python, Java; существуют реализованные сообществом API для Perl, Ruby,.NET[1] и C++);

Погуглив, что есть в интернете на эту тему, я пришел к выводу, что статей об установке и настройке Сфинкса много, а вот о том, как связать это дело с Laravel – ничего нету. По этому попробую заполнить этот пробел. Итак.

Установка Sphinx

Установка Sphinx на Ubuntu хорошечно описана здесь. Разве что к описанному конфигу, я бы добавил настройки морфологии поиска. Например секция Index из моего конфига:

index index_name
{
source            = src1
path              = /var/lib/sphinxsearch/data/index_name
morphology        = stem_enru
min_word_len      = 1
charset_type      = utf-8
docinfo           = extern
}

Что здесь есть хорошего?

morphology = stem_enru – Здесь мы задаем в качестве морфологии стемминг. Что это значит? Ну например если мы будем искать “задача”, поисковая машина выдаст нам варианты: “задачи”, “задач”, “задаче”. Можно задать стемминг как отдельно для языка, например “stem_en”, “stem_ru”, так и для обоих языков – “stem_enru”. Больше о морфологии можно почитать Здесь.

min_word_len = 1 – минимальное количество символов для поиска.

charset_type = utf-8 – ну мы же как белые люди работаем в UTF-8, правильно?

Установка клиента

Клиентов Sphinx для Laravel – тьма тьмущая. Но я решил взять тот, который обновлялся последним. Это клиент “sngrl/sphinxsearch”. Устанавливаем через композер:

composer require sngrl/sphinxsearch:dev-master

Далее прописываем сервис-провайдер в массив “providers” в config/app.php

'providers' => array(
        /*** тут какие-то другие провайдеры ***/
        sngrl\SphinxSearch\SphinxSearchServiceProvider::class,
    ),


Публикуем


php artisan vendor:publish --provider=sngrl\SphinxSearch\SphinxSearchServiceProvider --force

Тут должен был создаться конфигурационный файл, но лично у меня он почему-то не создался. Если у вас тоже, создаете ручками файл config/sphinxsearch.php. В нем пишем:

<?php
return array(
    'host'    => '192.168.10.10', //Такие же хост и порт у вас должны быть прописаны в конфиге Сфинкса 
    'port'    => 9312, //для данной конфигурации соответственно listen = 192.168.10.10:9312
    'timeout' => 30,
    'indexes' => array(
        'index_name' => array ( 'table' => 'table_name', 'column' => 'column_name' )
    )
);

index_name – тот же самый, который мы прописывали в конфиге. table_name – имя таблицы из которой мы будем делать выборку. column_name – поле по которому мы будем делать выборку (скорее всего там будет id).

В контроллере пишем:

$sphinx  = new SphinxSearch();
$results = $sphinx->search($query, 'index_name')//$query - наша поисковая фраза, index_name - всё тот же, что мы указывали в конфиге выше
            ->setFieldWeights(//Приоритет полей при выдаче
                array(
                    'title' => 10,//Ну к примеру
                    'text'  => 8
                )
            )
            ->get();


Или проще:


$results = $sphinx->search('my query', 'index_name')->get();

Вот еще вариант с лимитами и фильтрами:

$results = $sphinx->search('my query', 'index_name')
	->limit(30)
	->filter('attribute', array(1, 2))
	->range('int_attribute', 1, 10)
	->get();

С сортировкой:

$result = $sphinx->search('my query', 'index_name')
	->setFieldWeights(
		array(
			'partno'  => 10,
			'name'    => 8,
			'details' => 1
		)
	)
	->setMatchMode(\Sphinx\SphinxClient::SPH_MATCH_EXTENDED)
	->setSortMode(\Sphinx\SphinxClient::SPH_SORT_EXTENDED, "@weight DESC")
	->get(true);  //passing true causes get() to respect returned sort order

Можно комбинировать. При использовании метода ->get(), мы получаем полноценную коллекцию моделей, которую мы можем сразу отправлять во вьюху. Если же нам нужно получить только прямой ответ от Сфинкса, используем метод ->query()

$results = $sphinx->search('my query', 'index_name')->query();

Вы великолепны!

3 072 thoughts on “Поиск Sphinx в Laravel”

  1. Уведомление: cialis 20mg europe
  2. Уведомление: viagra porn
  3. I have been browsing online greater than 3 hours lately, yet I
    never found any attention-grabbing article like yours.
    It is lovely value sufficient for me. In my view, if all website owners
    and bloggers made good content material as you did, the internet shall be a lot more helpful
    than ever before.

  4. I have been browsing online more than three hours today, yet
    I never found any interesting article like yours.
    It is pretty worth enough for me. In my view, if all
    webmasters and bloggers made good content as you did, the net will
    be much more useful than ever before.

  5. It’s the best time to make some plans for the future and it’s time to be happy.
    I’ve read this post and if I could I want to suggest you few interesting things or suggestions.
    Perhaps you can write next articles referring
    to this article. I wish to read more things about it!

  6. Уведомление: viagra xxx
  7. Уведомление: sildenafil pronunciation
  8. I really like your blog.. very nice colors & theme.
    Did you make this website yourself or did you hire someone to do it for you?
    Plz respond as I’m looking to design my own blog
    and would like to know where u got this from. cheers

  9. Hi there would you mind letting me know which webhost you’re using?
    I’ve loaded your blog in 3 completely different web browsers and I must say this blog loads a lot quicker then most.

    Can you recommend a good web hosting provider
    at a honest price? Cheers, I appreciate it!

  10. It is appropriate time to make some plans for the long run and it
    is time to be happy. I’ve learn this post and if I could I wish to counsel you some fascinating issues or advice.
    Perhaps you can write next articles relating to this article.
    I desire to learn even more things about it!

  11. I have been surfing on-line greater than 3 hours
    lately, yet I by no means discovered any fascinating article like
    yours. It’s lovely value sufficient for me. In my view, if all site owners and bloggers made
    excellent content as you did, the internet will
    likely be a lot more helpful than ever before.

  12. Hey there! Someone in my Facebook group shared this site with us so I came to look it
    over. I’m definitely loving the information. I’m book-marking and will
    be tweeting this to my followers! Wonderful blog and terrific design.

  13. It is appropriate time to make a few plans for the future and
    it is time to be happy. I’ve learn this put up and if I could I wish to recommend you some
    fascinating issues or suggestions. Maybe you can write subsequent articles
    regarding this article. I want to learn even more things about it!

  14. It’s perfect time to make some plans for the future and it is time to be happy.
    I have read this post and if I could I want to suggest
    you some interesting things or tips. Perhaps you can write next articles referring to
    this article. I desire to read even more things about it!

  15. It is perfect time to make some plans for the future and
    it’s time to be happy. I’ve read this publish and if I may I desire to counsel you few interesting issues or suggestions.
    Perhaps you could write subsequent articles referring to
    this article. I want to learn more issues approximately it!

  16. It is appropriate time to make some plans for the long
    run and it’s time to be happy. I’ve read
    this publish and if I may just I desire to counsel you few attention-grabbing things or tips.
    Perhaps you could write next articles regarding this article.
    I wish to learn even more issues approximately it!

  17. I simply couldn’t go away your web site prior to suggesting that I extremely
    loved the usual information an individual provide to your visitors?

    Is gonna be again regularly in order to investigate cross-check new posts

  18. of course like your website however you have to check the spelling on several of your posts.
    A number of them are rife with spelling issues and I to find it very troublesome
    to inform the reality then again I’ll definitely come back again.

  19. I’ve been surfing online more than 3 hours today, yet I never found any
    interesting article like yours. It’s pretty worth enough for me.
    Personally, if all site owners and bloggers made good content as you did, the internet will be a lot more useful than ever before.

  20. Its like you learn my thoughts! You seem to understand so much about this, like you wrote
    the ebook in it or something. I think that you simply
    can do with a few p.c. to pressure the message home a little bit, but instead
    of that, this is fantastic blog. A fantastic read. I’ll certainly be back.

  21. I simply couldn’t leave your web site prior to suggesting that I extremely loved
    the standard info a person provide in your guests? Is gonna be again often in order to check up
    on new posts

  22. Hi, I do think this is a great website. I stumbledupon it 😉 I am going to come back once again since i have bookmarked it.
    Money and freedom is the best way to change, may
    you be rich and continue to help others.

  23. First off I want to say fantastic blog! I had a
    quick question that I’d like to ask if you don’t mind.
    I was curious to know how you center yourself and clear
    your head prior to writing. I’ve had a hard time clearing my thoughts in getting my thoughts out there.

    I truly do take pleasure in writing but it just seems like the first
    10 to 15 minutes are usually lost simply just trying to figure out how to begin. Any ideas or tips?
    Cheers!

  24. Its such as you read my mind! You seem to understand a lot about this,
    such as you wrote the ebook in it or something. I feel that you can do with
    a few percent to pressure the message home a bit, but other
    than that, that is wonderful blog. A great read. I will certainly be back.

  25. Simply want to say your article is as astonishing. The clearness in your post is simply spectacular and i can assume
    you are an expert on this subject. Well with your permission allow me
    to grab your RSS feed to keep up to date with forthcoming post.
    Thanks a million and please keep up the gratifying work.

  26. Greetings from Carolina! I’m bored at work so I decided to check
    out your site on my iphone during lunch break.
    I really like the information you present here and can’t wait to take a look when I get home.
    I’m surprised at how fast your blog loaded on my cell
    phone .. I’m not even using WIFI, just 3G .. Anyhow, excellent site!

  27. Уведомление: diclofenac sodium tablets
  28. Уведомление: flagyl dosing
  29. One thing I would like to discuss is that fat reduction plan fast may be possible by the correct diet and exercise. An individual’s size not just affects the look, but also the quality of life. Self-esteem, depressive disorder, health risks, and physical abilities are impacted in excess weight. It is possible to just make everything right whilst still having a gain. Should this happen, a problem may be the reason. While a lot food and never enough work out are usually guilty, common health concerns and widespread prescriptions could greatly enhance size. Thanks for your post right here.

  30. It’s the best time to make some plans for the future and it is time to be happy.
    I’ve read this post and if I could I wish to suggest you
    some interesting things or suggestions. Maybe
    you could write next articles referring to this article.
    I want to read even more things about it!

  31. I’ll immediately take hold of your rss feed as I can’t find your email subscription hyperlink or e-newsletter service.
    Do you’ve any? Please let me know in order that I may subscribe.
    Thanks.

  32. Appreciating the persistence you put into your blog and detailed information you offer.
    It’s good to come across a blog every once in a while that isn’t the same out of date rehashed material.

    Great read! I’ve saved your site and I’m adding your RSS feeds to my
    Google account.

  33. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  34. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  35. This recommendation came after a long-term pediatric clinical trial that showed that children taking a high dose of Revatio had a higher risk of death than children taking low doses, and that the lower doses of Revatio were not effective in improving exercise ability in children.

  36. This is the right webpage for anyone who wishes to find out about this topic. You know so much its almost hard to argue with you (not that I personally would want to…HaHa). You definitely put a new spin on a subject which has been discussed for many years. Great stuff, just great!

  37. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  38. This recommendation came after a long-term pediatric clinical trial that showed that children taking a high dose of Revatio had a higher risk of death than children taking low doses, and that the lower doses of Revatio were not effective in improving exercise ability in children.

  39. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  40. This is really interesting, You’re a very skilled blogger. I have joined your feed and look forward to seeking more of your wonderful post. Also, I have shared your site in my social networks!

  41. I wanted to check up and allow you to know how considerably I liked discovering your web blog today. We would consider it a good honor to operate at my company and be able to use the tips contributed on your web page and also be involved in visitors’ comments like this. Should a position associated with guest publisher become available at your end, please let me know.

  42. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  43. This is very interesting, You are a very skilled blogger. I’ve joined your rss feed and look forward to seeking more of your great post. Also, I have shared your website in my social networks!

  44. These numbers actually come close to the drives I was testing in the high-end category—including the pro” version of
    the CZ80, the SanDisk Extreme Pro CZ88—but at a significantly cheaper
    price.

  45. This is very interesting, You are a very skilled blogger. I have joined your feed and look forward to seeking more of your wonderful post. Also, I have shared your site in my social networks!

  46. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  47. This is the right site for everyone who would like to find out about this topic. You know a whole lot its almost hard to argue with you (not that I actually would want to…HaHa). You definitely put a fresh spin on a subject that has been written about for a long time. Great stuff, just wonderful!

  48. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  49. This web site is really a walk-through for all of the details you desired about this as well as didn?t understand that to ask. Look below, and also you?ll definitely discover it.

  50. https://interviewtip.net Vehicle increment permits
    the customer to develop a serial number to be created whenever a new document is
    put in the table. AUTO INCREMENT is the key words for Oracle, AUTO_INCREMENT in MySQL and also IDENTITY search phrase can be used in SQL SERVER for
    auto-incrementing. Mainly this search phrase is used to create the primary key
    for the table. Normalization arranges the existing tables and its fields within the
    database, resulting in minimal duplication. It is utilized to simplify a
    table as much as feasible while retaining the special areas.

    If you have actually little to say for yourself, the job interviewer power
    assume you have void to state. pl sql interview inquiries I
    make myself feel divine ahead the meeting begins.
    With this inquiry, the recruiter will evaluate you on how you prioritise your job checklist.
    I expect operations with damien once again in the future tense.
    You mightiness need a compounding of dissimilar kinds of inquiries in order to fully cover the problem, and also this
    may diverge betwixt participants. Prospects turn up to
    meetings with a surface of thrilling you.

    A main key is a unique kind of one-of-a-kind secret.
    A international key is utilized to maintain the referential web link stability in between two data
    tables. It avoids activities that can ruin links in between a youngster and a parent
    table. A primary key is utilized to specify
    a column that distinctly determines each row. Void value
    as well as replicate worths are not enabled to
    be entered in the main vital column. Nonetheless, you might not be provided this tip, so it gets on you to bear in mind that in such a scenario
    a subquery is precisely what you need. After you undergo the essential SQL meeting concerns, you are likely
    to be asked something more specific.

  51. Thank you for being my personal coach on this area. My partner and i enjoyed your article very much and most of all appreciated how you really handled the issues I regarded as being controversial. You are always rather kind to readers really like me and help me in my everyday living. Thank you.

  52. It is perfect time to make some plans for the future and it is time to be happy.
    I’ve read this post and if I could I wish to suggest you some interesting things or suggestions.
    Perhaps you could write next articles referring to
    this article. I want to read more things about it!

  53. Hello would you mind sharing which blog platform you’re using?
    I’m looking to start my own blog soon but I’m having a difficult time selecting between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your layout seems different then most blogs and I’m looking for something completely unique.

    P.S My apologies for getting off-topic but I had to ask!

  54. It is appropriate time to make some plans for the future and
    it is time to be happy. I have read this post and if I
    could I want to suggest you few interesting things or advice.

    Perhaps you could write next articles referring to this
    article. I desire to read more things about it!

  55. It’s the best time to make some plans for the future and it is time to be happy.
    I’ve learn this submit and if I may I want to counsel you few fascinating things or advice.
    Perhaps you can write next articles referring to this article.
    I want to read even more issues approximately it!

  56. http://beristain.udeo.edu.gt/user/robynturner02/

    https://writeablog.net/backharbor2/what-everyone-ought-to-know-about-the-iphone

    ===========
    wow. i found it finally. thanks!
    wow. i found it finally. thanks!

    Create a character and explore a world full of people from anywhere on the planet, interacting with them the same way you would in Habbo, all of this on the unusual social network IMVU Mobile.

    Enter the colorful world of IMVU Mobile as soon as you’ve created your character. The main screen shows posts that other users have made, follow them to never miss a post or just take a look at their content whenever you feel like it. Comment with photos, like posts, or exchange options with other users over chat.

    But the best thing about IMVU Mobile is that you can simulate any situation with your three-dimentional avatar. Virtually got to the beach, drive around, sleep, and more. Take virtual selfies and live a new, exciting life in IMVU Mobile.

    https://git.sicom.gov.co/RobynTurner02

    IMVU Free Vip Hack 2021
    Free IMVU Credits Calculator 2022
    Free IMVU Credits Code 2022
    Free IMVU Credits No Verification 2021
    IMVU Hack No Human Verification 2022
    IMVU Free Credits Watch Videos 2022
    Free IMVU Credits Surveys

  57. http://www.ict-edu.uk/user/48802/

    https://russiarock15.bloggersdelight.dk/2021/07/02/the-best-guide-when-it-comes-to-your-iphone/

    ===========
    wow. i found it finally. thanks!
    wow. i found it finally. thanks!

    Create a character and explore a world full of people from anywhere on the planet, interacting with them the same way you would in Habbo, all of this on the unusual social network IMVU Mobile.

    Enter the colorful world of IMVU Mobile as soon as you’ve created your character. The main screen shows posts that other users have made, follow them to never miss a post or just take a look at their content whenever you feel like it. Comment with photos, like posts, or exchange options with other users over chat.

    But the best thing about IMVU Mobile is that you can simulate any situation with your three-dimentional avatar. Virtually got to the beach, drive around, sleep, and more. Take virtual selfies and live a new, exciting life in IMVU Mobile.

    http://www.edu.fudanedu.uk/user/robynturner02/

    IMVU Free Clothes 2021
    How To Get Credits On IMVU 2021
    How To Earn Free IMVU Credits
    Free Credits For IMVU Cheat Codes 2022
    How To Get Free IMVU Credits Instantly 2021
    How To Get Free IMVU Credits Quick
    Free IMVU Promo Credits

  58. http://www.edu.fudanedu.uk/user/robynturner02/

    http://octavefaucet1.jigsy.com/entries/general/The-Best-Guide-When-It-Comes-To-Your-IPhone

    ===========
    wow. i found it finally. thanks!
    wow. i found it finally. thanks!

    Create a character and explore a world full of people from anywhere on the planet, interacting with them the same way you would in Habbo, all of this on the unusual social network IMVU Mobile.

    Enter the colorful world of IMVU Mobile as soon as you’ve created your character. The main screen shows posts that other users have made, follow them to never miss a post or just take a look at their content whenever you feel like it. Comment with photos, like posts, or exchange options with other users over chat.

    But the best thing about IMVU Mobile is that you can simulate any situation with your three-dimentional avatar. Virtually got to the beach, drive around, sleep, and more. Take virtual selfies and live a new, exciting life in IMVU Mobile.

    http://onlinemanuals.txdot.gov/help/urlstatusgo.html?url=https://atlskills.weebly.com/

    Free IMVU Credits Hack Without Surveys
    IMVU Free Credits Android 2022
    Free IMVU Credits No Survey Or Download 2022
    Free IMVU Credits No Survey No Offers
    Free IMVU Credits Hack Without Surveys 2022
    How Do I Get Free Credits On IMVU
    IMVU Credits Generator No Offers

  59. https://git.sicom.gov.co/RobynTurner02

    https://pbase.com/topics/lycrashelf0/using_the_iphone_is_simple_w

    ===========
    wow. i found it finally. thanks!
    wow. i found it finally. thanks!

    Create a character and explore a world full of people from anywhere on the planet, interacting with them the same way you would in Habbo, all of this on the unusual social network IMVU Mobile.

    Enter the colorful world of IMVU Mobile as soon as you’ve created your character. The main screen shows posts that other users have made, follow them to never miss a post or just take a look at their content whenever you feel like it. Comment with photos, like posts, or exchange options with other users over chat.

    But the best thing about IMVU Mobile is that you can simulate any situation with your three-dimentional avatar. Virtually got to the beach, drive around, sleep, and more. Take virtual selfies and live a new, exciting life in IMVU Mobile.

    https://id.pr-cy.ru/user/profile/RobynTurner02/#/profile

    IMVU Free 4000 Credits
    Free IMVU Credits Glitch
    IMVU Credits Hack No Surveys
    Free IMVU Credits Code Generator
    How To Get Free Money On IMVU
    IMVU Hack Accounts 2021
    Free IMVU Credits On Mobile 2022

  60. https://torgi.gov.ru/forum/user/profile/1439633.page

    https://lunchbanana4.werite.net/post/2021/07/02/Don-t-Know-If-IPhone-Is-Right-For-You-Learn-About-This-Amazing-Device-Here!

    ===========
    wow. i found it finally. thanks!
    wow. i found it finally. thanks!

    Create a character and explore a world full of people from anywhere on the planet, interacting with them the same way you would in Habbo, all of this on the unusual social network IMVU Mobile.

    Enter the colorful world of IMVU Mobile as soon as you’ve created your character. The main screen shows posts that other users have made, follow them to never miss a post or just take a look at their content whenever you feel like it. Comment with photos, like posts, or exchange options with other users over chat.

    But the best thing about IMVU Mobile is that you can simulate any situation with your three-dimentional avatar. Virtually got to the beach, drive around, sleep, and more. Take virtual selfies and live a new, exciting life in IMVU Mobile.

    https://id.pr-cy.ru/user/profile/RobynTurner02/#/profile

    Free IMVU Credits For Pc
    How To Get Free Credits On IMVU Cheats
    Free IMVU Credits Code Generator
    How To Get Free IMVU Credits Mobile
    How To Get Free IMVU Credits 2021
    Free IMVU Credits Google Docs 2022
    Free IMVU Credits Cheat Codes 2022

  61. It is perfect time to make some plans for the future and it is time to be happy.

    I have read this post and if I could I want to
    suggest you few interesting things or suggestions. Perhaps you can write next articles referring to this article.

    I wish to read more things about it!

  62. It is perfect time to make some plans for the long run and
    it is time to be happy. I’ve learn this put up and if I may I wish to recommend you few fascinating issues or suggestions.
    Maybe you can write subsequent articles referring to
    this article. I wish to read more issues approximately it!

  63. I’ll right away clutch your rss as I can’t find your email subscription link
    or e-newsletter service. Do you’ve any? Please allow me realize in order that I could
    subscribe. Thanks.

  64. Уведомление: order viagra online
  65. Уведомление: viagra over counter
  66. Уведомление: hydroxychloroquine 800 mg
  67. Hey just wanted to give you a quick heads up.
    The text in your content seem to be running off the screen in Internet explorer.
    I’m not sure if this is a formatting issue or something to do with web browser compatibility but I figured I’d post to let you know.
    The layout look great though! Hope you get the issue solved soon.
    Thanks

  68. Hi there would you mind letting me know which hosting company you’re utilizing?

    I’ve loaded your blog in 3 different browsers and I must
    say this blog loads a lot quicker then most. Can you suggest a good web hosting provider at a fair price?

    Thank you, I appreciate it!

  69. college essays https://myessayfriend.com/ writing paper thesis writing help write my paper for me my college https://myessayfriend.com/ – writing paper help essay i need help writing my paper writes your essay for you https://myessayfriend.com/ essay writer reviews best essay writing service homework helper narrative essay help auto essay writer help with an essay essay writer generator write a paper https://myessayfriend.com/ – paper help

  70. essay writers https://myessayfriend.com/ – paper writing services how to do your homework essay assistance https://myessayfriend.com/ https://myessayfriend.com/ essay writing software how to write a paper in apa format write a paper for me dissertation help https://myessayfriend.com/ buy dissertation paper https://myessayfriend.com/ – help with writing an essay online essay writer my essay writer https://myessayfriend.com/ samedayessay write my essay for me do my homework

  71. https://myessayfriend.com/ persuasive essay writer https://myessayfriend.com/ – write my paper for me how to do your homework i need help writing my paper https://myessayfriend.com/ – free essay writer essay writing online homework https://myessayfriend.com/ write essay for you free essay writer argumentative essays buying essays online https://myessayfriend.com/ college essay writing service essay writing software homework online online essay writer https://myessayfriend.com/ – persuasive essay writer

  72. https://myessayfriend.com/ automatic essay writer write essay for you how to write an essay college essay prompts write a paper for me https://myessayfriend.com/ – argument essay online essay writer writing paper help essay paper writing how to write a good essay college essay writing services argument essay help me write my essay https://myessayfriend.com/ paper help https://myessayfriend.com/ my homework writing essay college essay prompts

  73. buy dissertation online https://myessayfriend.com/ – essay helper writing help help with homework https://myessayfriend.com/ essay writing services https://myessayfriend.com/ research paper help with writing paper homework help https://myessayfriend.com/ essay writer free https://myessayfriend.com/ – my homework easy essay writer college essay prompts essay hook generator help writing a paper dissertation online https://myessayfriend.com/ – how to do your homework good