<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Search Nuggets &#187; search</title>
	<atom:link href="http://blog.comperiosearch.com/blog/tag/search/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.comperiosearch.com</link>
	<description>A blog about Search as THE solution</description>
	<lastBuildDate>Mon, 13 Jun 2016 08:59:45 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Experimenting with Open Source Web Crawlers</title>
		<link>http://blog.comperiosearch.com/blog/2016/04/29/experimenting-with-open-source-web-crawlers/</link>
		<comments>http://blog.comperiosearch.com/blog/2016/04/29/experimenting-with-open-source-web-crawlers/#comments</comments>
		<pubDate>Fri, 29 Apr 2016 11:03:42 +0000</pubDate>
		<dc:creator><![CDATA[Mridu Agarwal]]></dc:creator>
				<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenWebSpider]]></category>
		<category><![CDATA[Scrapy]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Web Crawling]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=4080</guid>
		<description><![CDATA[Whether you want to do market research or gather financial risk information or just get news about your favorite footballer from various news site,  web scraping has many uses. In my quest to learn know more about web crawling and scraping , I decided to test couple of Open Source Web Crawlers which were not [...]]]></description>
				<content:encoded><![CDATA[<p lang="en-US">Whether you want to do market research or gather financial risk information or just get news about your favorite footballer from various news site,  web scraping has many uses.</p>
<p lang="en-US">In my quest to learn know more about web crawling and scraping , I decided to test couple of Open Source Web Crawlers which were not only easily available but quite powerful as well. In this article I am mostly going to cover their basic features and how easy they are to start with.</p>
<p lang="en-US">If you are like one of those persons who likes to quickly get started while learning something, I would suggest that you try <a href="http://www.openwebspider.org/">OpenWebSpider</a> first.</p>
<p lang="en-US">It is a simple web browser based open source crawler and search engine which is simple to install and use and is very good for those who are trying to get acquainted to web crawling . It stores webpages in MySql or MongoDb. I used MySql for my testing purpose. You can follow the steps <a href="http://www.openwebspider.org/documentation/openwebspider-js/">here</a> to install it. It&#8217;s pretty simple and basic.</p>
<p lang="en-US">So, once you have installed everything , you just need to open a web-browser at <a href="http://127.0.0.1:9999/">http://127.0.0.1:9999/</a> and you are ready to crawl and search. Just check your database settings, type the Url of the site you want to crawl and within couple of minutes, you have all the data you need. You can even search it going to the search tab and typing in your query. Whoa! That was quick and compact and needless to say you don’t need any programming skills to crawl it.</p>
<p lang="en-US">If you are trying to create an off-line copy of your data or your very own mini Wikipedia, I think go for this as it’s the easiest way to do it.</p>
<p lang="en-US">Following are some screen shots:</p>
<p lang="en-US"><a href="http://blog.comperiosearch.com/wp-content/uploads/2016/04/OS1.png"><img class="alignleft wp-image-4083 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2016/04/OS1.png" alt="OpenWebSpider" width="613" height="438" /></a></p>
<p lang="en-US"><a href="http://blog.comperiosearch.com/wp-content/uploads/2016/04/OS2.png"><img class="alignleft wp-image-4086 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2016/04/OS2.png" alt="OpenSearchWeb" width="611" height="441" /></a></p>
<p lang="en-US" style="text-align: left"><a href="http://blog.comperiosearch.com/wp-content/uploads/2016/04/OS3.png"><img class="alignleft size-full wp-image-4087" src="http://blog.comperiosearch.com/wp-content/uploads/2016/04/OS3.png" alt="OpenSearchWeb" width="611" height="441" /></a></p>
<p lang="en-US" style="text-align: left">You can also see the this Search engine demo <a href="http://lab.openwebspider.org/search_engine/">here</a>, before actually getting started.</p>
<p lang="en-US" style="text-align: left">Ok, after getting my hands on into web crawling, I was curious to do  more sophisticated stuff like extracting topics from a web site where I do not have any RSS feed or API. Extracting this structured data could be quite important to many business scenarios where you are trying to follow competitor&#8217;s product news or gather data for business intelligence. I decided to use <a href="http://scrapy.org/">Scrapy</a> for this experiment.</p>
<p lang="en-US" style="text-align: left">The good thing about Scrapy is that it is not only fast and simple, but very extensible as well. While installing it on my windows environment, I had few hiccups mainly because of the different compatible version of python but in the end, once you get it, it&#8217;s very simple(Isn&#8217;t that how you feel anyways , once things works ? Anyways, forget it! :D). Follow these links, if you are having trouble installing Scrapy like me:</p>
<p lang="en-US" style="text-align: left"><a href="https://github.com/scrapy/scrapy/wiki/How-to-Install-Scrapy-0.14-in-a-64-bit-Windows-7-Environment">https://github.com/scrapy/scrapy/wiki/How-to-Install-Scrapy-0.14-in-a-64-bit-Windows-7-Environment</a></p>
<p lang="en-US" style="text-align: left"><a href="http://doc.scrapy.org/en/latest/intro/install.html#intro-install">http://doc.scrapy.org/en/latest/intro/install.html#intro-install</a></p>
<p lang="en-US" style="text-align: left">After installing, you need to create a Scrapy project. Since we are doing more customized stuff than just crawling the entire website, this requires more effort and knowledge of programming skills and sometime browser tools to understand the HTML DOM. You can follow <a href="http://doc.scrapy.org/en/latest/intro/overview.html">this</a> link to get started with you first Scrapy project .Once you have crawled the data that you need, it would be interesting to feed this data into a search engine. I have also been looking for open source web crawlers for Elastic Search and this looked like the perfect opportunity. Scrapy provides integration with Elastic Search out of the box , which is awesome. You just need to install the Elastic Search module for Scrapy(of course Elastic Search should be running somewhere) and configure the Item Pipeline for Scrapy. Follow <a href="http://blog.florian-hopf.de/2014/07/scrapy-and-elasticsearch.html">this</a> link for the step by step guide. Once done, you have the fully integrated crawler and search system!</p>
<p lang="en-US" style="text-align: left">I crawled <a href="http://primehealthchannel.com">http://primehealthchannel.com</a> and created an index named &#8220;healthitems&#8221; in Scrapy.</p>
<p lang="en-US" style="text-align: left">To search the elastic search index, I am using Chrome extension <span style="font-weight: bold">Sense</span> to send queries to Elastic Search, and this is how it looks</p>
<p lang="en-US" style="text-align: left">GET /scrapy/healthitems/_search</p>
<p style="text-align: left"><a href="http://blog.comperiosearch.com/wp-content/uploads/2016/04/ES1.png"><img class="alignleft wp-image-4082 size-large" src="http://blog.comperiosearch.com/wp-content/uploads/2016/04/ES1-1024x597.png" alt="Elastic Search" width="1024" height="597" /></a></p>
<p lang="en-US" style="text-align: left">I hope you had fun reading this and now wants to try some of your own cool ideas . Do let us know how you used it and which crawler you like the most!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2016/04/29/experimenting-with-open-source-web-crawlers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Search: better user experience with one line of JavaScript</title>
		<link>http://blog.comperiosearch.com/blog/2015/05/18/search-better-user-experience-with-one-line-of-javascript/</link>
		<comments>http://blog.comperiosearch.com/blog/2015/05/18/search-better-user-experience-with-one-line-of-javascript/#comments</comments>
		<pubDate>Mon, 18 May 2015 13:59:01 +0000</pubDate>
		<dc:creator><![CDATA[Espen Klem]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[enterprise search]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[search box]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[website search]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=3680</guid>
		<description><![CDATA[What&#8217;s the cheapest trick you can do to get a better user experience on your search solution, and make your users do better search queries? Add a small line of JavaScript in your template&#8217;s document ready function: [crayon-69d4dae0caa48302374343/] This will do two things for the user: It&#8217;ll be easier to see the search box . [...]]]></description>
				<content:encoded><![CDATA[<p>What&#8217;s the cheapest trick you can do to get a better user experience on your search solution, and make your users do better search queries?</p>
<p><img class="alignnone wp-image-3683 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2015/05/search-box.png" alt="Illustration: A standard search box" width="598" height="66" /></p>
<p>Add a small line of JavaScript in your template&#8217;s document ready function:</p><pre class="crayon-plain-tag">$("#MySearchBox").focus();</pre><p>This will do two things for the user:</p>
<ol>
<li>It&#8217;ll be easier to see the search box .</li>
<li>The user can start typing without having to click inside the search box.</li>
</ol>
<p><a href="http://blog.comperiosearch.com/wp-content/uploads/2015/05/anim-just-cursor.gif"><img class="alignnone wp-image-3682 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2015/05/anim-just-cursor.gif" alt="Illustration: Better user experience ny setting focus on the search box" width="598" height="66" /></a></p>
<p>Next issue is that most intranet and websites are more than just a search solution. Maybe you don&#8217;t want that much attention on the search box on your homepage. The solution is then to do this on your search result page.</p>
<p><a href="http://blog.comperiosearch.com/wp-content/uploads/2015/05/anim-one-word.gif"><img class="alignnone wp-image-3685 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2015/05/anim-one-word.gif" alt="Illustration: Better user experience ny setting focus on the search box" width="598" height="66" /></a></p>
<p>This will make it easier for your users to enhance their search query when they&#8217;re not happy with the search result at hand.</p>
<p><a href="http://blog.comperiosearch.com/wp-content/uploads/2015/05/anim-more-words.gif"><img class="alignnone wp-image-3684 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2015/05/anim-more-words.gif" alt="Illustration: Better user experience ny setting focus on the search box" width="598" height="66" /></a></p>
<p>Do you have any other examples on other quick fixes that could make an even better user experience for your search solution?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2015/05/18/search-better-user-experience-with-one-line-of-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ny versjon av Comperio FRONT.NET</title>
		<link>http://blog.comperiosearch.com/blog/2015/05/13/ny-versjon-av-comperio-front-net/</link>
		<comments>http://blog.comperiosearch.com/blog/2015/05/13/ny-versjon-av-comperio-front-net/#comments</comments>
		<pubDate>Wed, 13 May 2015 10:24:54 +0000</pubDate>
		<dc:creator><![CDATA[Christoffer Vig]]></dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Comperio Front]]></category>
		<category><![CDATA[enterprise search]]></category>
		<category><![CDATA[logstash]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=3661</guid>
		<description><![CDATA[Comperio har gjennom tidenes løp levert over 100 søkeprosjekter. Tankegods, svette og erfaringer hentet fra dette arbeidet har krystallisert seg inn i vår egentuviklede programvare for søkeapplikasjoner: FRONT. Tidligere i vår lanserte vi versjon 5 av Java-FRONT, denne gang er det den noe yngre fetteren Comperio FRONT.NET som har fått ligge på operasjonsbordet. Hovedtrekkene i [...]]]></description>
				<content:encoded><![CDATA[<p>Comperio har gjennom tidenes løp levert over 100 søkeprosjekter. Tankegods, svette og erfaringer hentet fra dette arbeidet har krystallisert seg inn i vår egentuviklede programvare for søkeapplikasjoner: FRONT. Tidligere i vår lanserte vi versjon 5 av Java-FRONT, denne gang er det den noe yngre fetteren Comperio FRONT.NET som har fått ligge på operasjonsbordet. Hovedtrekkene i den nye versjonen er nye søkeadaptere, forbedret stabilitet og ytelse, samt forbedret logging.<br />
<span id="more-3661"></span></p>
<h4>Mellomvare for søk</h4>
<p>FRONT.NET opererer som mellomvare, og lar deg konfigurere forretningslogikk for søk uavhengig av både søkemotor og presentasjon. FRONT.NET er laget for å kunne hente og sette sammen informasjon fra ulike kilder, og kan gjerne kalles en søkeorkestrator.</p>
<p>FRONT.NET lar deg skille mellom forretningslogikk og applikasjonslogikk. Applikasjoner som trenger søkefunksjonalitet trenger ikke bry seg med kompliserte søkeuttrykk, men sender simpelthen spørreord over til FRONT.NET. Trenger du å avgrense søket, kan du sende med filter, som for eksempel brukerinformasjon, sted, avdeling, eller lignende. De komplekse spørringene tar FRONT seg av.</p>
<h4>Søkemotoruavhengighet</h4>
<p>FRONT.NET tilbyr et generelt format for spørringer, og søkeresultater. Dataformatet fra FRONT er det samme, uavhengig av om motoren i bakkant er SharePoint, ESP, eller Solr. FRONT.NET har i dag adaptere for Fast ESP, SharePoint 2010 og 2013, Elasticsearch, Solr og Google Search Appliance. Dette gjør det enkelt å sette sammen resultater fra ulike søkemotorer. Dersom du ønsker å bytte ut søkemotoren trenger det ikke innebære endringer i din applikasjon, da det kun er snakk om å bytte ut søkeadapter i FRONT.NET. Nye adaptere utvikles så snart vi ser behovet melde seg.</p>
<h4>Elasticsearch adapter</h4>
<p>Elasticsearch er en søkemotor i stor vekst. Til utvikling av Elasticsearch adapteret har vi kunnet dra nytte av NEST, den offisielle .NET klienten for Elasticsearch. Elasticsearch har enorm fleksibilitet i forhold til hvordan spørringer kan uttrykkes, med mulighet for nestede boolske uttrykk og dynamiske ranking-funksjoner. I utvikling av adapteret har vi valgt å minimere kompleksiteten i FRONT ved å delegere disse mulighetene inn i Elasticsearch via søkemaler (search templates). Dette ivaretar fleksibiliteten, samtidig som APIer og programmeringsgrensesnittene er beholdt.</p>
<h4>Google Search Appliance Adapter</h4>
<p>Comperio ble ifjor partner med Google, og vi har nå utviklet FRONT.NET adapter for Googles intranett søkemotor Google Search Appliance, eller bare GSA for kort. GSA tilbyr enkel integrasjon mot en rekke ulike kilder, søkegrensesnittet er enkelt og forholde seg til og adapteret har støtte for alle vanlige søkeoperasjoner.</p>
<h4>Logging</h4>
<p>For å kunne utvikle en god søkeløsning er det avgjørende at man har tilgang til gode søkelogger som avslører hvordan søkeapplikasjon brukes.<br />
FRONT.NET har nylig fått funksjonalitet for å kunne logge direkte til Logstash. Logstash kombinert med Elasticsearch og Kibana gir deg et kraftig verktøy for dataanalyse.</p>
<h4>FRONTD</h4>
<p>Versjon 5 av FRONT.NET kjører som en frittstående tjeneste i Windows.<br />
Tidligere versjoner opererte som web applikasjon under IIS (Internet information server), men vi ser at når vi kjører frittstående oppnås forenklet administrasjon, samt forbedret stabilitet og ytelse.</p>
<h4>Microsoft, .NET og veien videre</h4>
<p>Microsoft og .NET verdenen er under rivende utvikling for tiden, ikke minst gjennom Microsoft sin nye og kjært velkomne åpning mot open source. Vi liker veldig godt ideen om kryssplattform .NET, og neste versjon av FRONT.NET vil forhåpentligvis kjøre like bra på OS X og Linux som på Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2015/05/13/ny-versjon-av-comperio-front-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Search without search box: Recipe App  &#8211; Alpha version</title>
		<link>http://blog.comperiosearch.com/blog/2014/12/02/search-without-search-box-recipe-app-alpha/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/12/02/search-without-search-box-recipe-app-alpha/#comments</comments>
		<pubDate>Tue, 02 Dec 2014 14:44:48 +0000</pubDate>
		<dc:creator><![CDATA[Espen Klem]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[recipe app]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[search box]]></category>
		<category><![CDATA[search interface]]></category>
		<category><![CDATA[search ux]]></category>
		<category><![CDATA[search without search box]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=3078</guid>
		<description><![CDATA[First thing first: I really like search as a technology. Not so much because how it helps us today, but how it can help us tomorrow. Especially on the UX front, stuff moves slowly. One of the biggest issues, in my mind, is the empty search box. That&#8217;s why I tend to look for solutions [...]]]></description>
				<content:encoded><![CDATA[<p>First thing first: I really like search as a technology. Not so much because how it helps us today, but how it can help us tomorrow. Especially on the UX front, stuff moves slowly. One of the biggest issues, in my mind, is the empty search box. That&#8217;s why I tend to look for solutions where you have search without search box, or functions and tools that extends the search box.</p>
<div id="attachment_3102" style="width: 609px" class="wp-caption alignnone"><img class="wp-image-3102 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2014/12/Screen-Shot-2014-12-02-at-13.34.13.png" alt="Illustration: The empty search box by Google" width="599" height="95" /><p class="wp-caption-text">The empty search box by Google</p></div>
<h2>The problem with an empty search box</h2>
<p>So, what&#8217;s the biggest problem with the empty search box? In my mind it doesn&#8217;t give a hint about what&#8217;s the possible outcome of asking a question to the search engine. Think about these five questions being different search boxes:</p>
<ol>
<li>Soooo&#8230;?</li>
<li>What would you like?</li>
<li>What would you like for desert?</li>
<li>Do you like ice cream for desert?</li>
<li>Do you like pistachio ice cream for desert?</li>
</ol>
<p>The first question is the most open ended, and is the equivalent of the empty search box in a general search engine. The one with all of the worlds knowledge at hand. Second one hints that the answers of your request lies within your likings. Third, the questions get semi-concrete, and fourth and fifth, you&#8217;re asked a yes/no-question.</p>
<h2>A search without search box working quite well</h2>
<p>The recipe app asks you if you like any of these recipes based on two variables (time of year + place you harvest the food). We know the date and make an assumption about place and tell you that we&#8217;ve chosen these variables. Then we give you a couple of extra variables to play with to refine the search a bit more.</p>
<p>So far, the content seems to trigger peoples imagination and the swipe interaction is easy enough to do many times, although not very well communicated so far. When I normally give people a working search prototype, they do 2 &#8211; 5 search queries. Now I see between 5 &#8211; 15. That&#8217;s great stuff, and maybe a search without search box is actually a good idea?</p>
<div></div>
<div id="attachment_3088" style="width: 610px" class="wp-caption alignnone"><a href="http://recipe.comperiosearch.com/"><img class="wp-image-3088" src="http://blog.comperiosearch.com/wp-content/uploads/2014/12/Screen-Shot-2014-12-01-at-15.51.27.png" alt="Illustration: Screenshot of Recipe App - Search without search box." width="600" height="411" /></a><p class="wp-caption-text">A screenshot of the Recipe App search solution without a search box</p></div>
<h2></h2>
<h2>Known bugs and weaknesses</h2>
<ul>
<li><strong>URL stays the same</strong><br />
No way of sharing a specific search (month+place+filters)</li>
<li><strong>Buggy visual relevance</strong><br />
For desktop and pad, all recipes with match on three ingredients or more should have full width result view.</li>
<li><strong>Not all recipes indexed</strong><br />
HTML for the recipes has changed. We didn&#8217;t have time to figure out all the new characteristics of the new HTML, so a lot of recipes were not indexed.</li>
<li><strong>Visual snag on time navigator</strong><br />
When selecting &#8220;short&#8221;, &#8220;medium&#8221; or &#8220;long&#8221; time to prepare recipe it should collapse as with the type navigator.</li>
<li><strong>Swipe hangs every now and then</strong><br />
The swipe library is either not tuned perfectly or a little fragile. Easy to get into a state where it stops working.</li>
<li><strong>All ingredients equally important<br />
</strong>&#8220;Oregano&#8221; and &#8220;Chicken wings&#8221; equally important. That results in some not-so-desired search results.</li>
<li><strong>Google Analytics and single page app not fixed</strong><br />
We log one pageview per user since it&#8217;s a single page app. With a rewriting of the URL this can be easily fixed.</li>
<li><strong>Design and UX</strong><br />
It&#8217;s just a makeshift design to communicate the idea. It should better explain interaction and season+place.</li>
</ul>
<p>Any comments? We&#8217;d love to get your input! Check out the solution, <a href="http://recipe.comperiosearch.com/">the actual recipe app</a>, or you can check out the other blog posts about the <a href="http://blog.comperiosearch.com/blog/tag/recipe-app/">Recipe App</a>. There&#8217;s a lot of both search domain-, tech- and UX-stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/12/02/search-without-search-box-recipe-app-alpha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Idea: Your life searchable through Norch &#8211; NOde seaRCH, IFTTT and Google Drive</title>
		<link>http://blog.comperiosearch.com/blog/2014/11/26/idea-your-life-searchable-norch-node-search-ifttt-google-drive/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/11/26/idea-your-life-searchable-norch-node-search-ifttt-google-drive/#comments</comments>
		<pubDate>Wed, 26 Nov 2014 14:33:08 +0000</pubDate>
		<dc:creator><![CDATA[Espen Klem]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[crawl]]></category>
		<category><![CDATA[Document Processing]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[Google Drive]]></category>
		<category><![CDATA[IFTTT]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Json]]></category>
		<category><![CDATA[Life Index]]></category>
		<category><![CDATA[Lifeindex]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[Node Search]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[norch]]></category>
		<category><![CDATA[Personal Search Engine]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[search-index]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[Small Data]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=3069</guid>
		<description><![CDATA[First some disclaimers: This has been posted earlier on lab.klemespen.com. Even though some of these ideas are not what you&#8217;d normally implement in a business environment, some of the concepts can obviously be transferred over to businesses trying to provide an efficient workplace for its employees. Norch is developed by Fergus McDowall, an employee of [...]]]></description>
				<content:encoded><![CDATA[<p><strong>First some disclaimers</strong>:</p>
<ul>
<li>This has been posted earlier on <a href="http://lab.klemespen.com/2014/11/25/idea-your-life-searchable-with-norch-node-search-ifttt-and-google-drive-spreadsheets/">lab.klemespen.com</a>.</li>
<li>Even though some of these ideas are not what you&#8217;d normally implement in a business environment, some of the concepts can obviously be transferred over to businesses trying to provide an efficient workplace for its employees.</li>
<li><a href="https://github.com/fergiemcdowall/norch">Norch</a> is developed by <a href="http://blog.comperiosearch.com/blog/author/fmcdowall/">Fergus McDowall</a>, an employee of Comerio.</li>
</ul>
<p>What if you could index your whole life and make this lifeindex available through search? What would that look like, and how could it help you? Refinding information is obviously one of the use case for this type of search. I&#8217;m guessing there&#8217;s a lot more, and I&#8217;m curious to figure them out.</p>
<h2>Actions and reactions instead of web pages</h2>
<p>I had the lifeindex idea for a little while now. Originally the idea was to index everything I browsed. From what I know and where <a href="https://github.com/fergiemcdowall/norch">Norch</a> is, it would take a while before I was anywhere close to achieving that goal. <a href="http://codepen.io/nickmoreton/blog/using-ifttt-and-google-drive-to-create-a-json-api">Then I thought of IFTTT</a>, and saw it as a &#8216;next best thing&#8217;. But then it hit me that now I&#8217;m indexing actions, and that&#8217;s way better than pages. But what I&#8217;m missing from most sources now are the reactions to my actions. If I have a question, I also want to crawl and index the answer. If I have a statement, I want to get the critique indexed.<span id="more-3069"></span></p>
<p>IFTTT and similar services (like Zapier) is quite limiting in their choice of triggers. Not sure if this is because of choices done by those services or limitations from the sites they crawl/pull information from.</p>
<p>A quick fix for this, and a generally good idea for Search Engines, would be to switch from a preview of your content to the actual content in the form of an embed-view. Here exemplified:</p>
<blockquote class="twitter-tweet" data-width="500"><p lang="en" dir="ltr">Will embed-view of your content replace the preview-pane in modern <a href="https://twitter.com/hashtag/search?src=hash&amp;ref_src=twsrc%5Etfw">#search</a>  <a href="https://twitter.com/hashtag/engine?src=hash&amp;ref_src=twsrc%5Etfw">#engine</a> solutions? Why preview when you can have the real deal?</p>
<p>&mdash; Espen Klem (@eklem) <a href="https://twitter.com/eklem/status/536866049078333440?ref_src=twsrc%5Etfw">November 24, 2014</a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<h2>Technology: Hello IFTTT, Google SpreadSheet and Norch</h2>
<p>IFTTT is triggered by my actions, and stores some data to a series of spreadsheets on Google Drive. <a href="http://jsonformatter.curiousconcept.com/#https://spreadsheets.google.com/feeds/list/1B-OFzKIMVNk_3xMX_jBToGGyxSKv6FoyFYTHpGEy5O0/od6/public/values?alt=json">These spreadsheets can deliver JSON</a>. After a little document processing these JSON-files can be fed to the <a href="https://github.com/fergiemcdowall/norch#norch-indexer">Norch-indexer</a>.</p>
<h2>Why hasn&#8217;t this idea popped up earlier?</h2>
<p>Search engines used to be hardware guzzling technology. With Norch, the &#8220;NOde seaRCH&#8221; engine, that has changed. Elasticsearch and Solr are easy and small compared to i.e. SharePoint Search, but still it needs a lot of hardware. Norch can run on a Raspberry Pi, and soon it will be able to run in your browser. Maybe data sets closer to <a href="http://en.wikipedia.org/wiki/Small_data">small data</a> is more interesting than <a href="http://en.wikipedia.org/wiki/Big_data">big data</a>?</p>
<p><a href="http://youtu.be/ijLtk5TgvZg"><img src="http://blog.comperiosearch.com/wp-content/uploads/2014/11/Screen-Shot-2014-11-26-at-16.42.27-300x180.png" alt="Video: Norch running on a Raspberry Pi" width="300" height="180" class="alignnone size-medium wp-image-3075" />Norch running on a Raspberry Pi</a></p>
<h2>Why using a search engine?</h2>
<p>It&#8217;s cheap and quick. I&#8217;m not a developer, and I&#8217;ll still be able to glue all these sources together. Search engines are often a good choice when you have multiple sources. IFTTT and Google SpreadSheet makes it even easier, normalising the input and delivering it as JSON.</p>
<h2>How far in the process have I come?</h2>
<p><a href="https://testlab3.files.wordpress.com/2014/11/15140752323_1f69685449_o.png"><img class="alignnone size-full wp-image-118" src="https://testlab3.files.wordpress.com/2014/11/15140752323_1f69685449_o.png" alt="Illustration: Setting up sources in IFTTT." width="660" height="469" /></a></p>
<p>So far, I&#8217;ve set up a lot of triggers/sources at IFTTT.com:</p>
<ul>
<li>Instagram: When posting or liking both photos and videos.</li>
<li>Flickr: When posting an image, creating a set or linking a photo.</li>
<li>Google Calendar: When adding something to one of my calendars.</li>
<li>Facebook: When i post a link, is tagged, post a status message.</li>
<li>Twitter: When I tweet, retweet, reply or if somebody mentions me.</li>
<li>Youtube: When I post or like a video.</li>
<li>GitHub: When I create an issue, gets assigned to an issue or any issues that I part take in is closed.</li>
<li>WordPress: When new posts or comments on posts.</li>
<li>Android location tracking: When I enter and exit certain areas.</li>
<li>Android phone log: Placed, received and missed calls.</li>
<li>Gmail: Starred emails.</li>
</ul>
<p><a href="https://testlab3.files.wordpress.com/2014/11/screen-shot-2014-11-24-at-13-27-57.png"><img class="alignnone size-full wp-image-127" src="https://testlab3.files.wordpress.com/2014/11/screen-shot-2014-11-24-at-13-27-57.png" alt="Screen Shot 2014-11-24 at 13.27.57" width="660" height="572" /></a></p>
<p><a href="https://testlab3.files.wordpress.com/2014/11/screen-shot-2014-11-24-at-13-31-46.png"><img class="alignnone size-full wp-image-128" src="https://testlab3.files.wordpress.com/2014/11/screen-shot-2014-11-24-at-13-31-46.png" alt="Screen Shot 2014-11-24 at 13.31.46" width="660" height="194" /></a></p>
<p>And gotten a good chunk of data. Indexing my SMS&#8217;es felt a bit creepy, so I stopped doing that. And storing email just sounded too excessive, but I think starred emails would suit the purpose of the project.</p>
<p>Those Google Drive documents are giving me JSON. Not JSON that I can feed directly Norch-indexer, it needs a little trimming.</p>
<h2>Issues discovered so far</h2>
<h3>Manual work</h3>
<p>This search solution needs a lot of manual setup. Every trigger needs to be set up manually. Everytime a new trigger is triggered, I get a new spreadsheet that needs a title row added. Or else, the JSON variables will look funny, since first row is used for variable names.</p>
<p>The spreadsheets only accepts 2000 rows. After that a new file is created. Either I need to delete content, rename the file or reconfigure some stuff.</p>
<h3>Level of maturity</h3>
<p><a href="https://testlab3.files.wordpress.com/2014/11/screen-shot-2014-11-24-at-13-41-34.png"><img class="alignnone size-full wp-image-129" src="https://testlab3.files.wordpress.com/2014/11/screen-shot-2014-11-24-at-13-41-34.png" alt="Screen Shot 2014-11-24 at 13.41.34" width="660" height="664" /></a></p>
<p>IFTTT is a really nice service, and they treat their users well. But, for now, it&#8217;s not something you can trust fully.</p>
<h3>Cleaning up duplicates and obsolete stuff</h3>
<p>I have no way of removing stuff from the index automatically at this point. If I delete something I&#8217;ve added/written/created, it will not be reflected in the index.</p>
<h3>Missing sources</h3>
<p>Books I buy, music I listen to, movies and TV-series I watch. Or Amazon, Spotify, Netflix and HBO. Apart from that, there are no Norwegian services available through IFTTT.</p>
<h3>History</h3>
<p>The crawling is triggered by my actions. That leaves me without history. So, i.e. new contacts on LinkedIn is meaningless when I don&#8217;t get to index the existing ones.</p>
<h2>Next steps</h2>
<h3>JSON clean-up</h3>
<p>I need to make a document processing step. <a href="https://github.com/fergiemcdowall/norch-document-processor">Norch-document-processor</a> would be nice if it had handled JSON in addition to HTML. <a href="https://github.com/fergiemcdowall/norch-document-processor/issues/6">Not yet, but maybe in the future</a>? Anyway, there&#8217;s just a small amount of JSON clean-up before I got my data in and index.</p>
<p>When this step is done, a first version can be demoed.</p>
<h3>UX and front-end code</h3>
<p>To show the full potential, I need some interaction design of the idea. For now they&#8217;re all in my head. And these sketches needs to be converted to HTML, CSS and Angular view.</p>
<h3>Embed codes</h3>
<p>Figure out how to embed Instagram, Flickr, Facebook and LinkedIn-posts, Google Maps, federated phonebook search etc.</p>
<h3>OAUTH configuration</h3>
<p>Set up <a href="https://github.com/ciaranj/node-oauth">OAUTH NPM package</a> to access non-public spreadsheets on Google Drive. Then I can add some of the less open information I have stored.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/11/26/idea-your-life-searchable-norch-node-search-ifttt-google-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bitbucket to Elasticsearch Connector</title>
		<link>http://blog.comperiosearch.com/blog/2014/09/18/bitbucket-elasticsearch-connector/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/09/18/bitbucket-elasticsearch-connector/#comments</comments>
		<pubDate>Thu, 18 Sep 2014 11:46:16 +0000</pubDate>
		<dc:creator><![CDATA[Murhaf Fares]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=2989</guid>
		<description><![CDATA[&#8220;Ability to search source code? (BB-39)&#8221; is an issue created in July 2011 on Bitbucket and its status is still new. If you have used Bitbucket before, you would have certainly noticed that there is no way to search in a repository&#8217;s source code. Now what if you had more than 200 repositories (as is [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright wp-image-3002 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2014/09/bitbucket-logo-a3719e03.png" alt="bitbucket-logo-a3719e03" width="248" height="248" /><br />
<em>&#8220;Ability to search source code? (BB-39)&#8221;</em> is an <a href="https://bitbucket.org/site/master/issue/2874/ability-to-search-source-code-bb-39" target="_blank">issue created in July 2011</a> on Bitbucket and its status is still new. If you have used Bitbucket before, you would have certainly noticed that there is no way to search in a repository&#8217;s source code. Now what if you had more than 200 repositories (as is the case for Comperio) and you wanted to search for some examples on how to use a function, for example? There are two options. Either clone all the repos to your local machine and then do some &#8216;grep&#8217; magic or use our connector to index Bitbucket content in elasticsearch and then search happily ever after.</p>
<p>In this blog post, we introduce an <a href="https://github.com/comperiosearch/bitbucket-elasticsearch-connector" target="_blank">open-source and free connector</a> that indexes content from Bitbucket in elasticsearch. The connector is written in Python and it has two main modes: <em>index</em>, indexes everything from your Bitbucket account in elasticsearch, and <em>update</em>, updates your elasticsearch index based on the commits from the last time your ran the connector (there are three types of git update: add, change and delete).<br />
The connector creates an elasticsearch index (based on the configurations provided in <a href="https://github.com/comperiosearch/bitbucket-elasticsearch-connector/blob/master/elasticsearch.conf" target="_blank">elasticsearch.conf</a>) which in turn has two types of documents, namely &#8216;file&#8217; and &#8216;repo&#8217;. We only provide a <a href="https://github.com/comperiosearch/bitbucket-elasticsearch-connector/blob/master/file_mapping.json" target="_blank">mapping file</a> for the &#8216;file-typed&#8217; documents, you can create one for repos as well. For information on the connector and how to use it, please see the <a href="https://github.com/comperiosearch/bitbucket-elasticsearch-connector" target="_blank">project&#8217;s page</a> on GitHub.</p>
<p><strong>Bitbucket REST APIs</strong><br />
If you check the source code of the connector, you will see that we are using two versions of Bitbucket REST APIs (<a href="https://confluence.atlassian.com/display/BITBUCKET/Version+1" target="_blank">version 1.0</a> and <a href="https://confluence.atlassian.com/display/BITBUCKET/Version+2" target="_blank">version 2.0</a>). We are doing so because not everything supported by version 1.0 is supported by version 2.0 and vice versa, e.g. branches are retrievable in API V 1.0 but not 2.0.</p>
<p><strong>Field collapsing for duplicates from different branches</strong><br />
If a repo has more than one branch, the connector would index the files in all branches as separate documents. This means that whenever you are searching for something, you will see the same matching file from the different branches as separate hits as well. In order to avoid this, we created an ID called <em>collapse_id</em> which allows us to collapse hits of the same file, but from different branches, using queries similar to the following:<br />
<script src="https://gist.github.com/d26cc5a1c0b570de85b8.js?file=collapsing-with-top-hits-agg.json"></script><br />
See another example of field collapsing using the top hits aggregation <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html#_field_collapse_example" target="_blank">on elasticsearch.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/09/18/bitbucket-elasticsearch-connector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint search display templates made easy</title>
		<link>http://blog.comperiosearch.com/blog/2014/06/23/sharepoint-search-display-templates/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/06/23/sharepoint-search-display-templates/#comments</comments>
		<pubDate>Mon, 23 Jun 2014 10:49:47 +0000</pubDate>
		<dc:creator><![CDATA[Madalina Rogoz]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[display templates]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=2625</guid>
		<description><![CDATA[One of the most interesting features in SharePoint 2013 are the display templates. This blog post will describe how to customize a search display template in order to show the item created date. The display templates are located in the site collection root site, under the _catalogs/Display Templates folder. Each template has two files: the html [...]]]></description>
				<content:encoded><![CDATA[<p>One of the most interesting features in SharePoint 2013 are the display templates. This blog post will describe how to customize a search display template in order to show the item created date.</p>
<p>The display templates are located in the site collection root site, under the _catalogs/Display Templates folder. Each template has two files: the html file and a javascript file. The javascript file is the one that SharePoint uses, while the html exists in order to make it easier for us developers to create and customize the display templates. Once an html file has been modified, SharePoint generates the corresponding updated javascript file, so the process is fully automated.</p>
<p>So what are the steps involved in creating a new display template?</p>
<p>In SharePoint designer, after opening the root website, navigate to the Display Templates folder. Here, in the Search subfolder, you will find the display templates that SharePoint uses for many types of results – documents, web sites, people and others. Choose a display template as a starting point for your own, depending on the result type that you are targeting, copy it and then rename it. Once saved, you will see that SharePoint has already generated the corresponding javascript file. Modify the html file as you wish. What is left to do now is to link the template to an actual result type, so that SharePoint knows what to associate your display template to. This can be done through the interface, by navigating to Site Settings – Search Result Types.</p>
<p>Let’s take it step by step.</p>
<h3>Duplicating an existing display template</h3>
<p>Open the site collection with SharePoint designer. Navigate to the Display Templates folder under <em>_catalogs\masterpage\display templates</em>. Here you will find some Folders that SharePoint uses to group Display Templates together.</p>
<p>The Word item template is in the Search folder. Make a copy of the <em>Item_Word.html</em> and rename it to <em>ComperioItem_Word.html</em></p>
<p><img class="alignnone wp-image-2626 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2014/06/spdisptemp_01.png" alt="spdisptemp_01" width="509" height="221" /></p>
<p>Edit the file and inside you will see some html and javascript code.</p>
<p>Edit the <strong>title field</strong> so that your custom template has a different display name than the original one.</p>
<p>The <em>&lt;mso:CustomDocumentProperties&gt;</em> tag contains some properties of the template. Some important properties are:</p>
<ul>
<li><em>TargetControlType</em> – tells SharePoint what the template is used for (search results, web parts, filters)</li>
<li><em>ManagedPropertyMapping</em> &#8211; contains a list of the managed properties that are or can be used by the current template</li>
</ul>
<p>The <em>&lt;body&gt;</em> tag contains the rendering logic for the display template.</p>
<p>The template can only recognize the managed properties that are listed in the header. To use another managed property, add it here. We are using the <em>Created</em> property that displays the document created date.</p><pre class="crayon-plain-tag">&lt;mso:ManagedPropertyMapping msdt:dt="string"&gt; 
'Title':'Title','Path':'Path', [………..] , ‘Created’:’Created’ 
&lt;/mso:ManagedPropertyMapping&gt;</pre><p>Now that the template is aware of the property, you can use it by adding it to the body. Add the line below in the Body of the rendering template:</p><pre class="crayon-plain-tag">&lt;div class="ms-descriptiontext"&gt; _#= ctx.CurrentItem.Created =#_ &lt;/div&gt;</pre><p><img class="alignnone wp-image-2627 size-full" src="http://blog.comperiosearch.com/wp-content/uploads/2014/06/spdisptemp_02.png" alt="spdisptemp_02" width="649" height="99" /></p>
<h3>Mapping the display template to a result type</h3>
<p>Now we are going to manually link the display template to a result type, so that we can see that it works.</p>
<p>In order for SharePoint to use your custom template, it needs to know of it. So navigate to Site Actions – Site Settings and under Site Collection Administration choose Search Result Types. Create a New Result Type for your template like below:</p>
<ul>
<li>Choose a Name</li>
<li>Choose Microsoft Word as content to match</li>
<li>Choose your custom display template</li>
</ul>
<p><a href="http://blog.comperiosearch.com/wp-content/uploads/2014/06/spdisptemp_03.png"><img class="alignnone wp-image-2628 size-medium" src="http://blog.comperiosearch.com/wp-content/uploads/2014/06/spdisptemp_03-300x189.png" alt="spdisptemp_03" width="300" height="189" /></a></p>
<p>Now go to the results page and search for a word document. The results should display a date looking like this:</p>
<p><a href="http://blog.comperiosearch.com/wp-content/uploads/2014/06/spdisptemp_04.png"><img class="alignnone size-medium wp-image-2629" src="http://blog.comperiosearch.com/wp-content/uploads/2014/06/spdisptemp_04-300x94.png" alt="spdisptemp_04" width="300" height="94" /></a></p>
<p>We have only been scratching the surface and a lot more customization can be done here, for example formatting the date value in javascript by using a function like <em>format(&#8220;yyyy-MM-dd&#8221;) </em>on a Date object. Combined, SharePoint and javascript have (almost) endless possibilities.</p>
<p>Happy coding!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/06/23/sharepoint-search-display-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 reasons Lebron is the future, or why the Forage search engine will rock</title>
		<link>http://blog.comperiosearch.com/blog/2014/05/28/5-reasons-lebron-future-forage-search-engine-will-rock/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/05/28/5-reasons-lebron-future-forage-search-engine-will-rock/#comments</comments>
		<pubDate>Wed, 28 May 2014 08:51:51 +0000</pubDate>
		<dc:creator><![CDATA[Espen Klem]]></dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Browserify]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[forage]]></category>
		<category><![CDATA[Forage Search Engine]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Lebron]]></category>
		<category><![CDATA[leveldb]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[Webrebels]]></category>
		<category><![CDATA[Webrebels conference]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=2388</guid>
		<description><![CDATA[The Lebron stack Last week, I saw the future. Wohaa, that&#8217;s always a great feeling.  I&#8217;ve seen it in earlier weeks also, but now it was even brighter than before. For me, it&#8217;s still called the Lebron Stack as Max Ogden explains it and consists of LevelDB, Browserify and npm. All this is mostly happening [...]]]></description>
				<content:encoded><![CDATA[<h2>The Lebron stack</h2>
<p>Last week, <a href="https://www.webrebels.org/">I saw the future</a>. Wohaa, that&#8217;s always a great feeling.  I&#8217;ve seen it in earlier weeks also, but now it was even brighter than before. For me, it&#8217;s still called <a href="http://lebron.technology/">the Lebron Stack as Max Ogden explains it</a> and consists of <a href="http://leveldb.org/"><strong>Le</strong>velDB</a>, <a href="http://browserify.org/"><strong>Bro</strong>wserify</a> and <a href="http://npmjs.org/"><strong>n</strong>pm</a>. All this is mostly happening in JavaScript. Before I&#8217;m knocked to the ground: <a href="https://www.google.no/?gfe_rd=cr&amp;ei=p22EU7WML8yS_Ab17AE&amp;gws_rd=cr#q=&quot;why+javascript+is+the+future&quot;&amp;safe=off">I wasn&#8217;t the first to either make the prediction or say it out loud</a>. I&#8217;m way behind, and it&#8217;s not a very novel or extreme idea, just a really good one. But when something is predicted, it may take a long time before it happens, if it happens at all. I think it&#8217;s happening now-ish.</p>
<p>So this blog post is about why I think that time is now. <strong>Disclaimer for the .Net and Java heads</strong> And all you .Net- and Java-heads will surely find some stuff that will be done better within your part of the world, but hear me out! I know the list of &#8220;This already exists in OS [W] or [X]&#8221; or &#8220;You can do that with software [X], [Y] or [Z]&#8220;. I have these thoughts my self, and I&#8217;ve been wondering why I still think that Lebron and JavaScript still will be so much more important. I&#8217;m not saying that .Net and Java stuff will go away, it will just be less important (it already is) and most of the cool and stuff closer to the user will happen in the JavaScript world.</p>
<div style="width: 650px" class="wp-caption alignnone"><a href="https://www.webrebels.org/"><img class=" " src="http://photos-g.ak.instagram.com/hphotos-ak-prn/10349587_639374052804126_792484736_n.jpg" alt="" width="640" height="640" /></a><p class="wp-caption-text">The future is bright at the Webrebels conference in Oslo, May &#8211; 2014.</p></div>
<h2>Here are the reasons I found so far</h2>
<ul>
<li><strong>Most stuff happens in the browser</strong> Selling anything, you want to be where the people are. For regular people that&#8217;s on their smartphone using a web app or just a native app, which in most cases is a web app wrapped as a native app. Emerging markets makes this shift towards the browser happen even faster. The <a href="http://www.mozilla.org/en-US/firefox/os/">Firefox OS</a> may fail as an OS, but still succeed creating a standard smartphone API for web applications, the <a href="https://developer.mozilla.org/en-US/docs/WebAPI">WebAPI</a>. This will make it even easier to create web apps for all of the world&#8217;s smartphones, which leads me on to my next point.</li>
<li><strong>Easier for startups and developers</strong> Competing with the big ones is never easy. <a href="http://aws.amazon.com/">Amazon Web Services</a>, AWS,  and similar services made it a little easier to scale hardware use dynamically, and from that, the cost of hardware. With the browser as a VM and <a href="http://en.wikipedia.org/wiki/Single-page_application">single page applications</a> a lot of the web application rendering and logic is moved from the servers to the clients. So for a small company the choice is easy. Why do all the heavy lifting on your own servers when the users can do most of the application rendering and logic on their smartphones? The irony in the old &#8220;thin vs. thick client&#8221; debate is that <a href="https://www.google.no/search?q=world%27s+thinnest+smartphone&amp;safe=off&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=g4GEU6SaMoeK4gTz2oDYDQ&amp;ved=0CAgQ_AUoAQ&amp;biw=1919&amp;bih=1072">the clients actually got a lot thinner</a>, and in the same go started doing more of the heavy lifting. While a <a href="http://www.dailymail.co.uk/sciencetech/article-2219188/Inside-Google-pictures-gives-look-8-vast-data-centres.html">Google data center</a> is impressive, I also got a feeling it&#8217;s a sign of something gone terribly wrong.</li>
<li><strong>Collaboration, modularity and minimum effort</strong> npm is great stuff. It takes away a lot of dependency pain in the JavaScript world. Combined with people that are very good at writing small modular programs and lots of stuff under the <a href="http://en.wikipedia.org/wiki/MIT_License">MIT license</a> we have a winner. We now have tools for collaboration that actually works. People build their <a href="https://github.com/mafintosh/torrent-mount">killer</a> <a href="https://github.com/mafintosh/torrent-stream">apps</a> with very little effort on top of <a href="https://github.com/mafintosh/torrent-stream/blob/master/package.json">others&#8217; greatness</a>. No more <a href="http://en.wikipedia.org/wiki/Comparison_of_text_editors">reinventing the text editor</a>.</li>
<li><strong>Cheaper hardware for regular users</strong> Okay, most people access the Internet through their phone, but the Chromebook explains this point very well. Why have a full OS, with all the hardware costs to run it fairly fast, when all you do is fire up a browser? <a href="https://www.google.no/?gfe_rd=cr&amp;ei=hISEU_SVNYaX_Aa984HoDg#q=%22the+browser+is+the+os%22&amp;safe=off">The browser is the OS</a> more and more each day. Last time my desktop at home broke down, <a href="https://www.flickr.com/photos/eklem/5040220136/in/set-72157626346440700">I bought a new one</a>. The new one was state of the art and it was a miscalculation buying it. Almost every time I boot it (running Ubuntu), I&#8217;m asked to upgrade to the newest version. That means every half year or so. The laptop I have, I actually use a little, but much less than my pad/tablet and phone.</li>
<li><strong>Everything fun is online</strong> Not a real argument, but hey&#8230; Isn&#8217;t it true?</li>
</ul>
<h2>But what about the Forage search engine you say?</h2>
<p>So, what does these reasons for Lebron/JavaScript&#8217;s future success have to do with the Forage search engine? First of all, it&#8217;s written in JavaScript and <a href="http://youtu.be/ijLtk5TgvZg">needs very little hardware to run properly</a>. You <a href="https://github.com/fergiemcdowall/forage/#installation">install it with npm</a>, and that takes care of all the dependencies, like <a href="https://code.google.com/p/leveldb/">LevelDB</a>, where the data is actually stored. <a href="http://blog.comperiosearch.com/blog/2014/04/29/idea-search-server-running-inside-your-browser/">Hopefully it will run in the browser in near future</a> using Browserify and make testing, installing and maintaining search software so much easier and more accessible. It also opens up a lot of new interesting use cases for search. My guess is that it won&#8217;t compete with the bigger search engines, but that it will open up the possibility for better and cheaper search functionality for small scale solutions. <a href="https://github.com/fergiemcdowall/forage/"><img class="alignnone" src="https://farm6.staticflickr.com/5192/14141658313_ebf053d53d_m.jpg" alt="" width="240" height="150" /></a></p>
<p>Anything you want to add to or subtract from the list?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/05/28/5-reasons-lebron-future-forage-search-engine-will-rock/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instant Search in SharePoint 2013</title>
		<link>http://blog.comperiosearch.com/blog/2014/05/26/instant-search-in-sharepoint-2013/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/05/26/instant-search-in-sharepoint-2013/#comments</comments>
		<pubDate>Mon, 26 May 2014 07:27:23 +0000</pubDate>
		<dc:creator><![CDATA[Erik Andreassen Perez]]></dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[display templates]]></category>
		<category><![CDATA[instant search]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[SharePoint 2013 Search]]></category>
		<category><![CDATA[ssa]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=2297</guid>
		<description><![CDATA[Have you been thinking about implementing instant search to your SharePoint 2013 project, but not quite sure where to start? In this blog post I will try to explain how you can easily enhance the search experience in SharePoint 2013 in a few simple steps. Instant search is widely known as «the way Google do [...]]]></description>
				<content:encoded><![CDATA[<p>Have you been thinking about implementing instant search to your SharePoint 2013 project, but not quite sure where to start? In this blog post I will try to explain how you can easily enhance the search experience in SharePoint 2013 in a few simple steps.</p>
<p>Instant search is widely known as «the way Google do it» &#8211; in fact they were the ones who started this trend and now everyone are used to it. What if you could give your SharePoint users the same experience they are already familiar with?</p>
<p>To begin with you must have in mind that instant search <strong>will</strong> produce a lot more queries and that your search performance <strong>will</strong> get worse if you have too many users hammering your SSA (Search Service Application). So, yes &#8211; there is a risk. The trade-off is high if you can increase the search experience to your users, but there’s also a risk of damaging the search experience totally if things start to go slow and people end up getting zero-hits.</p>
<p>Anyways, for the proof of concept you don’t need to think about this now :-)</p>
<p>Before moving on please check that you can meet these prerequisites:</p>
<p><strong>Prerequisites</strong></p>
<ul>
<li>Administrator Access to a SharePoint 2013 site</li>
<li>SharePoint Designer 2013 or a way of mapping your site&#8217;s directory</li>
<li>A text editor such as Sublime Text or Notepad++ (doesn&#8217;t really matter, but I recommend an editor with some code highlighting / intellisense)</li>
<li>Basic understanding of the concept regarding DisplayTemplate in SharePoint 2013 (You can read more about it <a href="http://borderingdotnet.blogspot.fi/2013/03/the-anatomy-of-sharepoint-2013-display.html">here</a> and <a href="http://msdn.microsoft.com/en-us/library/office/jj945138(v=office.15).aspx">here</a> :-) )</li>
</ul>
<p>What we are going to do is that we are simply going to create a new DisplayTemplate for the SearchBox Control based on the original DisplayTemplate and edit the OnKeyUpEvent.</p>
<p><strong>Changing the DisplayTemplate</strong></p>
<ol>
<ol>
<li>Open SharePoint Designer 2013 and open your site</li>
<li>Browse to http://SPSite/_catalogs/masterpage/Display Template/Search</li>
<li>Create a copy of the DisplayTemplate named Control_SearchBox.html and name it Control_InstantSearchBox.html and open it and edit the &lt;title&gt;-tag to something else (you’ll need it do identify the template later)</li>
<li> Go to the javascript section in the template and create a function called  doInstantSearch(clientControl, value, event) that only executes the normal query request.</li>
</ol>
</ol>
<p>It should look something like this:<script src="https://gist.github.com/38a2fd89c8d10e15ea70.js?file=InstantSearch_Example_1.js"></script></p>
<ol>
<li>Edit the searchbox-control’s ‘onkeyup’-event by replacing the attribute’s value with: ‘doInstantSearch($getClientControl(this), this.value, event);’ and save your template. Now you can go to your SearchBox web part and change the template to your new one (look for the title you set in step 3.) and test it yourself.</li>
<li>Now you have a one-to-one relationship between each key you press and query that you send to your SSA. However, as you will probably notice, the whole thing feels a little bit slow and not so smooth. This is because you are hammering your SSA and re-rendering your template each time you press a key &#8211; even if it’s not a real character &#8211; not so funny right? Let&#8217;s fix it.</li>
<li>In order to fix this we need to add a character-filter and a timeout to our function. We will get the character from the keyCode and try to match the character using a regular expression. In this example we will operate with a RegEx matching all alphanumeric-characters including special norwegian characters like «æ ø å». If the character matches it we will reset the timeout function and start over with a new 300 ms delay. When we hit a non-alphanumeric character or the delay times out we will execute the search request.</li>
</ol>
<p>This is what we end up with:<br />
<script src="https://gist.github.com/38a2fd89c8d10e15ea70.js?file=InstantSearch_Example_2.js"></script></p>
<p>And now you have an instant search with a 300 ms delay for each legal character that the user enters in the search box.</p>
<p>Try it yourself :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/05/26/instant-search-in-sharepoint-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crawl interfaces for Forage running inside your browser</title>
		<link>http://blog.comperiosearch.com/blog/2014/05/21/crawl-interfaces-for-forage-running-inside-your-browser/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/05/21/crawl-interfaces-for-forage-running-inside-your-browser/#comments</comments>
		<pubDate>Wed, 21 May 2014 14:55:25 +0000</pubDate>
		<dc:creator><![CDATA[Espen Klem]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[crawl]]></category>
		<category><![CDATA[crawler]]></category>
		<category><![CDATA[forage]]></category>
		<category><![CDATA[Forage Fetch]]></category>
		<category><![CDATA[Forage Search Engine]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[user interfaces]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=2337</guid>
		<description><![CDATA[Got an idea a while back on how we could use the JavaScript/Nodejs Search Engine Forage so that the users would have their own search server inside the browser. The main takeaway from this would be that you don&#8217;t need to install anything to test the search engine. Since last time, I&#8217;ve made a quick [...]]]></description>
				<content:encoded><![CDATA[<p>Got an idea a while back on how we could use the JavaScript/Nodejs Search Engine <a href="https://github.com/fergiemcdowall/forage/">Forage</a> so that the users would <a href="http://blog.comperiosearch.com/blog/2014/04/29/idea-search-server-running-inside-your-browser/">have their own search server inside the browser</a>. The main takeaway from this would be that you don&#8217;t need to install anything to test the search engine. Since last time, I&#8217;ve made a quick logo for Forage, and drawn some more user interfaces. The mockups are mainly about crawl interfaces setting up the crawler, which in Forage terms is called Forage Fetch.</p>
<h2>Crawl interfaces, suggested</h2>
<p><a href="https://www.flickr.com/photos/eklem/14257669113/in/photostream/">Initial Crawl-window</a><br />
<a href="https://www.flickr.com/photos/eklem/14257669113/in/photostream/"><img class="alignnone" style="border: 1px solid black" src="https://farm3.staticflickr.com/2906/14257669113_822d5b524b.jpg" alt="javascript crawl interfaces" width="500" height="313" /></a></p>
<p>To crawl most pages elegantly and easily, you need five information elements:</p>
<ol>
<li>Somewhere to start. Which place do you want your crawler to start. You don&#8217;t have to specify the domain, we pick the domain name  from the page you&#8217;re visiting.</li>
<li>Which links to follow. This is not necessarily the pages you want to crawl. Typically these pages have lists of pages you want to crawl.</li>
<li>Which links not to follow. To not make the crawler go wild, you set some boundaries. Often a page has several URLs.</li>
<li>Which links to crawl. These are the actual pages you&#8217;re looking for.</li>
<li>Which links not to crawl.</li>
</ol>
<p>A simple illustration on the above rules. Forage Fetch doesn&#8217;t have all these features yet, but they&#8217;re <a href="https://github.com/fergiemcdowall/forage-fetch/issues/6">suggested as enhancements</a>.<br />
<a href="https://github.com/fergiemcdowall/forage-fetch/issues/6"><img class="alignnone" src="https://farm4.staticflickr.com/3731/12933582163_509b0e56ed.jpg" alt="" width="500" height="325" /></a></p>
<p><a href="https://www.flickr.com/photos/eklem/14257669223/in/set-72157643790505944">Selecting which rule type to add<br />
</a><a href="https://www.flickr.com/photos/eklem/14257669223/in/set-72157643790505944"><img class="alignnone" style="border: 1px solid black" src="https://farm3.staticflickr.com/2912/14257669223_bf7c7f179e.jpg" alt="javascript crawl interfaces" width="500" height="313" /></a></p>
<p>To ensure you&#8217;re adding valid rules, <a href="https://www.flickr.com/photos/eklem/14050882680/in/set-72157643790505944/">it&#8217;s a good ting to test first.<br />
</a><a href="https://www.flickr.com/photos/eklem/14050882680/in/set-72157643790505944/"><img class="alignnone" style="border: 1px solid black" src="https://farm6.staticflickr.com/5594/14050882680_4f6168e1c0.jpg" alt="javascript crawl interfaces" width="500" height="313" /></a></p>
<p><a href="https://www.flickr.com/photos/eklem/14050906527/in/set-72157643790505944/">Start URL added<br />
</a><a href="https://www.flickr.com/photos/eklem/14050906527/in/set-72157643790505944/"><img class="alignnone" style="border: 1px solid black" src="https://farm3.staticflickr.com/2897/14050906527_6b77d3977b.jpg" alt="javascript crawl interfaces" width="500" height="313" /></a></p>
<p><a href="https://www.flickr.com/photos/eklem/14235224692/in/set-72157643790505944/">The minimum amount of rules needed to start the crawler<br />
</a><a href="https://www.flickr.com/photos/eklem/14235224692/in/set-72157643790505944/"><img class="alignnone" style="border: 1px solid black" src="https://farm3.staticflickr.com/2898/14235224692_f79d48b310.jpg" alt="javascript crawl interfaces" width="500" height="313" /></a></p>
<p>Next tasks will be to make a clickable prototype in HTML/CSS and read up on HTML5 local storage/web storage.</p>
<p><strong>All comments on the idea are welcome! </strong>Here&#8217;s <a href="http://blog.comperiosearch.com/blog/tag/forage/">what we&#8217;ve blogged about Forage</a> so far.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/05/21/crawl-interfaces-for-forage-running-inside-your-browser/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
