<?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; people search</title>
	<atom:link href="http://blog.comperiosearch.com/blog/tag/people-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>Solr: Indexing SQL databases made easier!</title>
		<link>http://blog.comperiosearch.com/blog/2014/08/28/indexing-database-using-solr/</link>
		<comments>http://blog.comperiosearch.com/blog/2014/08/28/indexing-database-using-solr/#comments</comments>
		<pubDate>Thu, 28 Aug 2014 12:05:17 +0000</pubDate>
		<dc:creator><![CDATA[Seb Muller]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[jdbc]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[people search]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=2848</guid>
		<description><![CDATA[Update Part two is now available here! At the beginning of this year Christopher Vig wrote a great post about indexing an SQL database to the internet&#8217;s current search engine du jour, Elasticsearch. This first post in a two part series will show that Apache Solr is a robust and versatile alternative that makes indexing [...]]]></description>
				<content:encoded><![CDATA[<h3>Update</h3>
<p>Part two is now available <a href="http://blog.comperiosearch.com/blog/2015/04/14/solr-indexing-index-sql-databases-made-easier-part-2/">here!</a></p>
<hr />
<p>At the beginning of this year <a href="http://blog.comperiosearch.com/blog/author/cvig/">Christopher Vig</a> wrote a <a href="http://blog.comperiosearch.com/blog/2014/01/30/elasticsearch-indexing-sql-databases-the-easy-way/">great post </a>about indexing an SQL database to the internet&#8217;s current search engine du jour, <a href="http://www.elasticsearch.org/">Elasticsearch.</a> This first post in a two part series will show that <a href="http://lucene.apache.org/solr/">Apache Solr</a> is a robust and versatile alternative that makes indexing an SQL database just as easy. The second will go deeper into how to make leverage Solr&#8217;s features to create a great backend for a people search solution.</p>
<p>Solr ships with a configuration driven contrib called the <a href="http://wiki.apache.org/solr/DataImportHandler">DataImportHandler.</a> It provides a way to index structured data into Solr in both full and incremental delta imports. We will cover a simple use case of the tool i.e. indexing a database containing personnel data to form the basis of a people search solution. You can also easily extend the DataImportHandler tool via various <a href="http://wiki.apache.org/solr/DataImportHandler#Extending_the_tool_with_APIs">APIs</a> to pre-process data and handle more complex use cases.</p>
<p>For now, let&#8217;s stick with basic indexing of an SQL database.</p>
<h2>Setting up our environment</h2>
<p>Before we get started, there are a few requirements:</p>
<ol>
<li>Java 1.7 or greater</li>
<li>For this demo we&#8217;ll be using a <a href="http://dev.mysql.com/downloads/mysql/">MySQL</a> database</li>
<li>A copy of the <a href="https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2">sample employees database</a></li>
<li>The MySQL <a href="http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz">jdbc driver</a></li>
</ol>
<p>With that out of the way, let&#8217;s get Solr up and running and ready for database indexing:</p>
<ol>
<li>Download <a href="https://lucene.apache.org/solr/downloads.html">Solr</a> and extract it to a directory of your choice.</li>
<li>Open solr-4.9.0/example/solr/collection1/conf/solrconfig.xml in a text editor and add the following within the config tags:  <script src="https://gist.github.com/dd7cef212fd7f6a415b5.js?file=DataImportHandler"></script></li>
<li>In the same directory, open schema.xml and add this this line   <script src="https://gist.github.com/5bbc8c6e1a5b617b5d16.js?file=names"></script></li>
<li>Create a lib subdir in solr-4.9.0/solr/collection1/ and extract the MySQL jdbc driver jar into it. It&#8217;s the file called mysql-connector-java-{version}-bin.jar</li>
<li>To start Solr, open a terminal and navigate to the example subdir in your extracted Solr directory and run <code>java -jar start.jar</code></li>
</ol>
<p>When started this way, Solr runs by default on port 8983. If you need to change this, edit solr-4.9.0/example/etc/jetty.xml and restart Solr.</p>
<p>Navigate to <a href="http://localhost:8983/solr">http://localhost:8983/solr</a> and you should see the Solr admin GUI splash page. From here, use the Core Selector dropdown button to select the default core and then click on the Dataimport option. Expanding the Configuration section should show an XML response with a stacktrace with a message along the lines of <code>Can't find resource 'db-data-config.xml' in classpath</code>. This is normal as we haven&#8217;t actually created this file yet, which stores the configs for connecting to our target database.</p>
<p>We&#8217;ll come back to that file later but let&#8217;s make our demo database now. If you haven&#8217;t already downloaded the sample employees database and installed MySQL, now would be a good time!</p>
<h2>Setting up our database</h2>
<p>Assuming your MySQL server is installed <a href="http://blog.comperiosearch.com/wp-content/uploads/2014/12/createdatabase.png"><img class="alignright size-full wp-image-2900" src="http://blog.comperiosearch.com/wp-content/uploads/2014/12/createdatabase-300x226.png" alt="Prepare indexing database" width="300" height="226" /></a>and running, access the MySQL terminal and create the empty employees database: <code>create database employees;</code></p>
<p>Exit the MySQL terminal and import the employees.sql into your empty database, ensuring that you carry out the following command from the same directory as the employees.sql file itself: <code>mysql -u root -p employees &lt; employees.sql</code></p>
<p>You can test this was successful by logging <a href="http://blog.comperiosearch.com/wp-content/uploads/2014/08/testdatabase.png"><img class="alignright size-medium wp-image-2900" src="http://blog.comperiosearch.com/wp-content/uploads/2014/08/testdatabase-276x300.png" alt="Verify indexing database" width="276" height="300" /></a>into the MySql server and querying the database, as shown here on the right.</p>
<p>Having successfully created and populated your employee database, we can now create that missing db-data-config.xml file.</p>
<h2>Indexing our database</h2>
<p>In your Solr conf directory, which contains the schema.xml and solrconfig.xml we previously modified, create a new file called db-data-config.xml.</p>
<p>Its contents should look like the example below. Make sure to replace the user and password values with yours and feel free to modify or remove the limit parameter. There&#8217;s approximately 30&#8217;000 entries in the employees table in total <script src="https://gist.github.com/03935f1384e150504363.js?file=db-data-config"></script></p>
<p>We&#8217;re now going to make use of Solr&#8217;s REST-like HTTP API with a couple of commands worth saving. I prefer to use the <a href="https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm">Postman app</a> on Chrome and have created a public collection of HTTP requests, which you can import into Postman&#8217;s Collections view using this url: <a href="https://www.getpostman.com/collections/9e95b8130556209ed643">https://www.getpostman.com/collections/9e95b8130556209ed643</a></p>
<p>For those of you not using Chrome, here are the commands you will need:<script src="https://gist.github.com/05a2a1dd01a6c5a4517b.js?file=solr-http"></script> First let&#8217;s reload the core so that Solr is <a href="http://blog.comperiosearch.com/wp-content/uploads/2014/08/reloadcore.png"><img class="alignright size-medium wp-image-2921" src="http://blog.comperiosearch.com/wp-content/uploads/2014/08/reloadcore-300x181.png" alt="Reload Solr core" width="300" height="181" /></a><br />
aware of the new db-data-config.xml file we have created.<br />
Next, we index our database with the <a href="http://blog.comperiosearch.com/wp-content/uploads/2014/08/indexdb.png"><img class="alignright size-medium wp-image-2923" src="http://blog.comperiosearch.com/wp-content/uploads/2014/08/indexdb-300x181.png" alt="Index database to Solr" width="300" height="181" /></a>HTTP request or from within the Solr Admin GUI on the DataImport page.</p>
<p>Here we have carried out a full index of our database using the full-import command parameter. To only retrieve changes since the last import, we would use delta-import instead.</p>
<p>We can confirm that our database import was successful by querying our index with the &#8220;Retrieve all&#8221; and &#8220;Georgi query&#8221; requests.</p>
<p>Finally, to schedule reindexing you can use a simple cronjob. This one, for example, will run everyday at 23:00 and retrieve all changes since the previous indexing operation:<script src="https://gist.github.com/47f6df5a306e4cd51617.js?file=delta"></script></p>
<h2>Conclusion</h2>
<p>So far we have successfully</p>
<ul>
<li>Setup a database with content</li>
<li>Indexed the database into our Solr index</li>
<li>Setup basic scheduled delta reindexing</li>
</ul>
<p>In the next part of this two part series we will look at how to process our indexed data. Specifically, with a view to making a good people search solution. We will implement several features such as phonetic search, spellcheck and basic query completion. In the meantime, let&#8217;s carry on the conversation in the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2014/08/28/indexing-database-using-solr/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Et bedre personsøk</title>
		<link>http://blog.comperiosearch.com/blog/2013/09/23/et-bedre-personsok/</link>
		<comments>http://blog.comperiosearch.com/blog/2013/09/23/et-bedre-personsok/#comments</comments>
		<pubDate>Mon, 23 Sep 2013 08:25:05 +0000</pubDate>
		<dc:creator><![CDATA[Johannes Hoff Holmedahl]]></dc:creator>
				<category><![CDATA[Norwegian]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[findability]]></category>
		<category><![CDATA[internal search]]></category>
		<category><![CDATA[people search]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=1707</guid>
		<description><![CDATA[Jeg har laget mange internsøk de siste årene. Og i brukerintervjuene vi har gjennomført i forprosjektene, har vi funnet at de aller fleste leter etter mennesker: Enten etter et telefonnummer, eller etter eksperten på et fagområde. Målet vårt er ofte å lage en &#8220;intern Google&#8221; for kundene våre. Det betyr at vi må forstå hva [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Jeg har laget mange internsøk de siste årene. Og i brukerintervjuene vi har gjennomført i forprosjektene, har vi funnet at de aller fleste leter etter mennesker: Enten etter et telefonnummer, eller etter eksperten på et fagområde.</strong></p>
<p>Målet vårt er ofte å lage en &#8220;intern Google&#8221; for kundene våre. Det betyr at vi må forstå hva brukerne leter etter.</p>
<p><em>Når du søker på &#8220;365&#8243;:</em> Leter du da etter en kollega med internnummer som slutter på 365? Leter du etter personen med ansattnummer 365? Eller leter du rett og slett etter eksperten på produktet deres som heter &#8220;365&#8243;?</p>
<p>Jeg er en stor tilhenger av ett stort søk for bedriften din! Og jeg vet at jeg har flinke kolleger som kjenner veien frem til god relevans og en smart søkemotor.</p>
<p>Men: <strong>Min teori er at et godt søk blir enda bedre, jo mer vi vet om hva du egentlig leter etter.</strong></p>
<p>Vi har to ganske tydelige retninger for personsøk: Enten søker du etter kontaktinfo eller så leter du etter områdeeksperten.</p>
<p><img src="http://blog.comperiosearch.com/wp-content/uploads/2013/09/peoplesearch_figure.png" alt="To directions of people search" style="max-width:100%" /></p>
<p>Lek at vi skal lage et internsøk for Willy Wonka. <strong>Målet vårt er å la Oompa Loompaene bruke mest mulig tid på å lage  fantastisk godteri</strong>, og minst mulig tid på å lete etter oppskrifter, eksperter og telefonnummer.</p>
<p>I tillegg til å ha laget et stort &#8220;internt Google&#8221;, har vi også laget to app&#8217;er for Loompaene. En telefonbok og et ekspertsøk.</p>
<p>Først telefonboken:</p>
<p><img src="http://blog.comperiosearch.com/wp-content/uploads/2013/09/willywonka_phonebook-628x1024.jpg" alt="Willy Wonka Phonebook" height="400px" style="max-width:100%;max-height:400px" /></p>
<p>Willy Wonka PhoneBook er akkurat det det høres ut som. En app på datamaskinen, nettbrettet eller smarttelefonen som lar Loompane søke internt etter et telefonnummer eller en Lync-kontakt. I eksempelet over husker ikke brukeren fornavnet på kollegaen, men vet at han heter Loompa til etternavn og at han jobber i sjokoladeavdelingen. <em>(Og slapp av! Selv om du ikke ser forskjell klarer en Oompa Loompa å skille ansiktene fra hverandre.)</em></p>
<p>Dette løser et problem vi ikke bare finner på sjokoladefabrikker, men hos de fleste av våre kunder; å finne telefonnummeret. Og på denne måten har vi enda større sjanse for å gi dem rett svar på topp i resultatlisten.</p>
<p>Fordi brukerhistorien er så enkel som &#8220;jeg vil finne kontaktinfo til kollegaen min&#8221;, kan vi også <strong>strippe løsningen for sortering og fasetter</strong> – og ende opp med et enda enklere brukergrensesnitt.</p>
<p>Når en Oompa Loompa på den annen side vil finne eksperten på <em>sorbet </em>kan han derimot starte app&#8217;en &#8220;Willy Wonka Expert Search&#8221;:</p>
<p><img class="alignnone  wp-image-1701" src="http://blog.comperiosearch.com/wp-content/uploads/2013/09/willywonka_expertsearch-1024x803.jpg" alt="Willy Wonka Expert Search" width="600" /></p>
<p>Ekspertsøket søker gjennom alle dokumenter som ligger på filserveren til Willy Wonka, og søker gjennom alle diskusjoner, statusoppdateringer, grupper og diskusjoner på Willy Wonkas &#8220;interne Facebook&#8221;. Gjennom å <strong>finne hvem som har skrevet mest om fagområdet <em>sorbet</em></strong>, kan vi mest sannsynlig også vise frem at &#8220;Roger Loompa&#8221; er eksperten på området.</p>
<p>Når vi i tillegg ser at Roger på Iskrem labratoriet har nevnt sorbet i sin siste statusoppdatering &#8230; kan vi vel si at vi har en vinner.</p>
<p>–</p>
<p>Målet er ikke å lage en haug med app&#8217;er. Langt i fra! Målet er derimot å gi brukeren rett svar på spørsmålet sitt – hver eneste gang.</p>
<p>Å lage løsninger som forteller oss mer om hva brukeren leter etter, gjerne allerede før de har gjort et søk, øker sannsynligheten for å gi det rette svaret med en gang.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2013/09/23/et-bedre-personsok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better people search</title>
		<link>http://blog.comperiosearch.com/blog/2013/09/23/better-people-search/</link>
		<comments>http://blog.comperiosearch.com/blog/2013/09/23/better-people-search/#comments</comments>
		<pubDate>Mon, 23 Sep 2013 07:57:56 +0000</pubDate>
		<dc:creator><![CDATA[Johannes Hoff Holmedahl]]></dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[findability]]></category>
		<category><![CDATA[internal search]]></category>
		<category><![CDATA[people search]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://blog.comperiosearch.com/?p=1699</guid>
		<description><![CDATA[For the last year I have made a few internal searches. Almost every user interview I attend, we find that people are looking for people. Either a colleague’s phone number or email, or an expert on a specific field area. Our goal is often to make “an internal Google” for our customers. That indicates that [...]]]></description>
				<content:encoded><![CDATA[<p><strong>For the last year I have made a few internal searches. Almost every user interview I attend, we find that people are looking for people. Either a colleague’s phone number or email, or an expert on a specific field area.</strong></p>
<p>Our goal is often to make “an internal Google” for our customers. That indicates that we must understand what you are looking for.</p>
<p><em>When you search for “365”:</em> Are you looking for the person with the internal phone number 365? Are you looking for a colleague with the employee number 365? Or are you actually looking for the expert on your product, named “365”?</p>
<p>I am all for making one big search for your company! And I know I have colleagues that are magicians enough to solve these kinds of traps.</p>
<p>But: <strong>My theory is that a great search gets even greater when we know more about what the users are looking for</strong>.</p>
<p>These  are the two directions of people search:</p>
<p><img src="http://blog.comperiosearch.com/wp-content/uploads/2013/09/peoplesearch_figure.png" alt="To directions of people search" style="max-width:100%" /></p>
<p>Let’s pretend we make a search solution for Willy Wonka. <strong>Our goal is to let the Oompa Loompas spent as much time as possible making candy</strong>, and as little time as possible searching for recipes and phone numbers.</p>
<p>In addition to having one great search where they find everything, we also made two apps for the Loompas. One PhoneBook and one ExpertSearch.</p>
<p><img src="http://blog.comperiosearch.com/wp-content/uploads/2013/09/willywonka_phonebook-628x1024.jpg" alt="Willy Wonka Phonebook" height="400px" style="max-width:100%;max-height:400px" /></p>
<p>The PhoneBook is exactly that: An internal app on the Oompa Loompas desktop, smartboard or smartphone, where they can search for the phone number of the loompa in the chocolate department that they don’t remember the name to. <em>(Chill! They can separate their colleagues from each other even if you think they all look the same.)</em></p>
<p>This solves a common user need  that we find not only in candy factories, but at most of our customers. And we have a lot greater chance to give them the right answer doing it like this.</p>
<p>Because we take away all other user stories then “I want to find my colleagues contact information”, we can also <strong>take away almost all navigation and refiners</strong> – and end up with a much cleaner interface.</p>
<p>When an Oompa Loompa on the other hand needs help on refining the <em>sorbet</em> in the ice cream room, he can start the ExpertSearch app on his desktop, smartboard og smartphone.</p>
<p><img class="alignnone  wp-image-1701" src="http://blog.comperiosearch.com/wp-content/uploads/2013/09/willywonka_expertsearch-1024x803.jpg" alt="Willy Wonka Expert Search" width="600" /></p>
<p>The ExpertSearch searches within all documents written in the Willy Wonka Factory, and goes through all the discussions, social updates and communities on their internal collaboration system. From <strong>finding who has written and talked the most about <em>sorbet</em></strong>, we can most likely end up with suggestion “Roger Loompa” as the subject matter expert.</p>
<p>When we see that Roger in the Ice Cream Lab. in addition mentions <em>sorbet</em> in his latest MySite Status, I guess we have a winner.</p>
<p>–</p>
<p>Making a lot of apps isn’t the goal in itself. Not at all! The goal is to give the users the right answer on top of the search result list, every time.</p>
<p>But making solutions that gives the user the opportunity to tell us more about what kind of an answer he is looking for, even before he makes the search, increases the likelihood of giving the correct answer right away.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.comperiosearch.com/blog/2013/09/23/better-people-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
