How to implement full text search in NoSQL database? - mongodb

Has anyone tried to deploy NoSQL database with Full Text Search feature?
I read a lot of topics here in StackOverFlow and some other sites but they were all in 2011 and 2012 which I think there are a lot of updates to this moment.
I have a project that requires a full text search feature and I am trying to pick the right NoSQL database.
I am thinking also of ElasticSearch and Solr to enable this feature?
Is MongoDB Full Text Search Feature working fine? or it has performance and scalability issues?
Thanks,

Elasticsearch is working pretty good. You can use analyzers to stem your text. Also you can store your data in JSON format. It has "match_phrase" function allowing you to make full text search in a field that you want to search. Take a look at that.You can find documentations here : https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html

The MongoDb full text search feature works well from version 2.6, however, its full text search feature relies on a text index and you can only add one such index per collection. Depending on your exact requirements, this may be too limiting. Check the MongoDB documentation for more details. If you need a more flexible full text search functionality, Elasticsearch will be a better option.

Related

Fuzzy search on MongoDB using Java

can you please suggest if fuzzy search is possible on MongoDB using Java ? I could do exact search after creating a text index but need to implement fuzzy search. e.g. if I search for app, I should get both app and apple. I'm not using Mongo Atlas.

Is there some search engine SDK or API that I can use for local search?

I have many documents located on my disk and I want to build a search engine to search through them.
I know Google Desktop Search or Bing Desktop Search could do that. But I want to know if there's some SDK/API to do that so I can do some customization.
What I want to achieve, is that I can provide a document and the local search engine will return all the documents similar to it.
In general there are Lucene and Solr that can help to solve search related needs in Java (I guess you are using Java based on the tag GWT).
But I don't know how to do a search by example with these tools. I think you have to extract the relevant information of the document to construct a search based on it.

Google like autosuggest with Solr

I'm currently using Solr with Terms Component and Jquery Autosuggest which works quiet good. However, this construct is limited to one autosuggest word (it autocompletes only the first word). Is it possible to implement a Google like autosuggest with multiple words/terms so i can autocomplete multiple words?
I just wrote a blog post about different ways to make auto complete suggestions with Solr. It's basically a comparison of some different strategies, check it out, it might help.
If you want to make multiple terms suggestions, it turns out you should use, as already mentioned in the other answer you got, the Suggester component available in Solr starting from the 3.1 version. Since it has some limitations, you can also have a look at the ShingleFilterFactory, which generates token NGrams. It creates combination of tokens as a single token, that's useful to suggest multiple words.
You can also use SpellCheckComponent for better auto complete suggests.
See http://wiki.apache.org/solr/Suggester for details.
Edit:
Refer here for solr5 and above
Check this out, it might help
http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/
I worked out the same task, finally got solved using TermsComponent with multiple fields. check this link. http://lucene.472066.n3.nabble.com/auto-completion-search-with-solr-using-NGrams-in-SOLR-td3998559i20.html

How can I browse or query live MongoDB data?

I've googled around but couldn't find a working MongoDB viewer or data browser.
An ideal (for my needs) tool would be a web based viewer with dead simple features (browsing and doing queries).
You have :
Mongo3
futon4mongo
See: http://nosql.mypopescu.com/post/334469038/a-couple-of-nice-gui-tools-for-mongodb
Hopefully it'll be updated frequently when new tools are available!
EDIT:
Better overview: http://www.mongodb.org/display/DOCS/Admin+UIs
I just tried MongoVUE and it works like a charm!
Check it out: http://www.mongovue.com/
MongoHub is moved to a native mac version, please check http://github.com/bububa/MongoHub-Mac.
genghisapp is what you want.
It is a web-based GUI that is clean, light-weight, straight-forward, offers keyboard shortcuts, and works awesomely. It also supports GridFS.
Best of all, it's a single script!
To install it
$ gem install genghisapp bson_ext
(bson_ext is optional but will greatly improve the performance of the gui)
To run it (this will automatically open your web browser and navigate to the app as well)
genghisapp
To stop it
genghisapp --kill
https://github.com/Imaginea/mViewer
I have tried this one and as a viewer it's awesome with tree and document views.
Im just testing Rock_Mongo
It's a nice tool, written in PHP.
MogoVue is the best option I found so far, it has great features I did not see in other viewers, plus it gives few options to look at the data, as json, tables and hierarchy, which is extremely useful.
Avoid MongoExplorer, it has major issues, which can cause you huge headaches. When viewing records using this tools, it may change fields which are MongoId's to plane string, it does not give any indication on this, just does it when you focus on the id field, this bug cost me lots of time and effort trying to find "what and where in my code i'm doing this silly thing"...
RoboMongo
Genghis
And entire list from here http://docs.mongodb.org/ecosystem/tools/administration-interfaces/
While the built in Http Interface of MongoDB isn't exactly what you are asking for, but it is available and supports a REST interface to do simple queries, etc. This is built-in to the mongo instance with a default of port 28017.
Documentation: http://www.mongodb.org/display/DOCS/Http+Interface
As well as those mentioned by shingara, there's also:
Opricot
PHPMoAdmin
MongoHub (I've heard mixed reviews on this one, not sure if it's maintained)
Just pushed mongoclikker to GitHub. It's a dead simple MongoDB viewer written in Node.
There a lot of UIs on official mongo site http://www.mongodb.org/display/DOCS/Admin+UIs
To add to the list :)
I just made a simple Mongo browser based on a hierarchical JQueryTreeview and implemented in Sinatra and Ruby.
The reason for another viewer was that I wanted something that was fast and easy (both to use and the code base), that would let me peek at what was going on my MongoDB. Also, I wanted some nice Ajax effects. and could be the base of a more complete browser.
https://github.com/tomjoro/mongo_browser
I just released a simple web-based data viewer called Mongs. It isn't a server admin GUI, it's focused on data browsing, which sounds like what you're interested in. Mongs is implemented in Python using the Aspen web framework.
JMongo is nice db viewer using on fedora linux
I started work on small project: https://github.com/lucassus/mongo_browser
It's a mongodb browser based on ruby's sinatra framework.
here is the better tool for sql as well as No-Sql viewer and also you can query in gui mode with this tool.
"RoboMongo" is easy to use and cross platform, using on centos 6.2 but no option for data import/export which can be found in "umongo" but not easy to use as RoboMongo.
For web: genghis is simple and have much more fashion interface.
For desktop: robomongo: Shell-centric cross-platform MongoDB management tool
I'm using MongoDB Compass. You can download the community edition by entering valid information.
I using Robomongo, in version 0.8.3 implemented multiply inserting documents, for more details https://github.com/paralect/robomongo/issues/173. Robomongo also have builtin mongodb-shell may be usefully for your purposes.

Searching in Lucene .Net

I have used Lucene .Net for Indexing and using StandardAnalyzer to at time of Indexing. Now I want to search say 'attach'. In document 'attached' is there. How i get the successful hit for word 'attach'. Please help me as soon as possible.
Reducing word forms to their roots is called "stemming" in search engine software. Look at the first answer to How to enable stemming when searching using lucene.net? for a few options for stemmers using Lucene.net.