Tuesday Mar 26, 2013

Sharing a saved query through Desktop Integration Suite and folders

I had someone recently ask if there is a way to create a query folder through Desktop Integration Suite (DIS).  Query folders are a new feature available in Framework Folders that basically run pre-defined searches within the context of a folder.  While not immediately obvious, there is a way to do it. 

First, you perform your search through DIS and get your results in the Search Results folder.

DIS Search

Image Search

Search Results

You then take those results and right-click to save them as a Saved Query.  It now goes under the My Saved Queries folder within My Content Server.   Now you can hold down the Ctrl key and drag it to one of the folders under Browse Content.  

SaveQuery

Saved query

Query copied

Query in web UI

And that's all you need to create that query folder in DIS! 


Thursday Jan 10, 2013

Adding browser search engines in WebCenter Content

In a post I made a few years ago, I described how you can add WebCenter Content (UCM at the time) search to the browser's search engines.  I think this is a handy shortcut if you find yourself performing searches often enough in WCC. 

Well, in the PS5 release, this was actually included as a new feature.  You need to enable the DesktopIntegrationSuite component in order to access it.  Once you do, go to the My Content Server -> My Downloads link.  There you will see the 'Add browser search' link. 

Add Browser Search

Once clicked, an OpenSearchDescription XML file is produced which each modern browser supports for adding in the search engine. 

Browser Search Bar

The one piece that's missing is something I mentioned in my earlier post: forcing authentication.  If you haven't logged into the server, your search will be performed anonymously and you will only get back content that is available to the guest role.  To make sure the search is performed as your user, the extra parameter Auth=Internet can be passed to the server to cause the server to challenge your request and force a login if needed.  Because the definition of the search engine URL is defined within the DesktopIntegrationSuite component, a new custom component can be added to override this.  Basically, the new component must override the dis_search_plugin resource and modify the Url locations.  Below is an example:

<@dynamichtml dis_search_plugin@>
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
                       xmlns:moz="http://www.mozilla.org/2006/browser/search/">
    <ShortName><$if DIS_SearchPluginTitle$><$DIS_SearchPluginTitle$><$else$>Oracle WebCenter Content Server Search<$endif$></ShortName>
    <Description><$lc("wwDISSearchPluginDescription")$></Description>
    <Url type="text/html" method="get" template="<$xml(HttpBrowserFullCgiPath & "?IdcService=DESKTOP_BROWSER_SEARCH&Auth=Internet&MiniSearchText={searchTerms}")$>" />
    <$iconlocation=strReplace(HttpBrowserFullCgiPath,HttpCgiPath,"") & HttpImagesRoot & "desktopintegrationsuite/dis_search_plugin.ico"$>
    <Image height="16" width="16" type="image/x-icon"><$iconlocation$></Image>
    <Developer>Oracle Corporation</Developer>
    <InputEncoding>UTF-8</InputEncoding>
    <moz:SearchForm><$xml(HttpBrowserFullCgiPath & "?IdcService=DESKTOP_BROWSER_SEARCH&Auth=Internet&MiniSearchText=")$></moz:SearchForm>
</OpenSearchDescription>
<$setContentType("application/xml")$>
<$setHttpHeader("Content-Disposition","inline; filename=search_plugin.xml")$>
<$setHttpHeader("Cache-Control", "public")$>
<@end@>

I've included a pre-built custom component that does just that.

UPDATE (Jan 15, 2013)

In addition to enabling the component, there is also a configuration preference that must be enabled.   After enabling the Desktop Integration Suite component,  go to the 'advanced component manager'.  Go to the bottom to the 'Update Component Configuration' list and select DesktopIntegrationSuite and click Update.  The first entry is to 'Enable web browser search plug-in'.  Check that and click Update.

DIS Configuration

If you've already restarted to enable the DIS component, you do not need to restart for this configuration to take effect.

Tuesday Jul 10, 2012

Adjusting the Score on Oracle Text search results

When you sort the results of a search by Score using OracleTextSearch as the search engine in WebCenter Content, the results coming back are based on the relevancy on the document.  In theory, the more relevant the search term is to the document, the higher ranked Score it should receive.  But in practice, the relevancy score can seem somewhat of a mystery.  It's not entirely clear how it ranks the importance of some documents over others based on the search term.  And often times, once a word appears a certain number of times within a document, the Score simply maxes out at 100 and the top results can be difficult to discern from one another.  Take for example the search for 'vacation' on this set of documents:

Score by relevance

Out of 7 results, 6 of them have a Score of '100' which means they are basically ranked the same.  This doesn't make the sort by Score very meaningful.  

Besides sorting by relevance, you can also tell Oracle Text to sort by occurrence.  In that case, it is a much more predictable result in how they would be ranked. And for many cases provide a more meaningful sorting of results then relevance. To change this takes a small component change to the SearchOperatorMap resource.  By default, the query used for full-text searching looks like:

<td>(ORACLETEXTSEARCH)fullText</td>
<td>DEFINESCORE((%V), RELEVANCE * .1)</td>
<td>text</td>

Overriding this resource and changing it to:

<td>(ORACLETEXTSEARCH)fullText</td>
<td>DEFINESCORE((%V), OCCURRENCE * .01)</td> 
<td>text</td>

will force it to now use occurrence (note the change in scale to .01 as well).  So running the same search and sort options as the example above, the results come out quite a bit differently:

Sort by occurrence

In this case, there is a clear understanding of how the items rank.   And generally, if the search term appears 3 times more in one document then another, it's got a better chance of being a document I'm interested in. 

You may or may not feel the relevance ranking is better then the search term occurrence, but this provides the opportunity to try an alternate method that might work better for your results.  A pre-built component is available for download here.

There is one caveat in using this method.  The occurrence ranking also maxes out at 100, so if a search term is in the document more then that, the Score result will stay at 100.

Thursday Mar 22, 2012

Full-text indexing? You must read this

For those of you who may have missed it, Peter Flies, Principal Technical Support Engineer for WebCenter Content, gave an excellent webcast on database searching and indexing in WebCenter Content.  It's available for replay along with a download of the slidedeck.  Look for the one titled 'WebCenter Content: Database Searching and Indexing'.

One of the items he led with...and concluded with...was a recommendation on optimizing your search collection if you are using full-text searching with the Oracle database.  This can greatly improve your search performance.  And this would apply to both Oracle Text Search and DATABASE.FULLTEXT search methods.  Peter describes how a collection can become fragmented over time as content is added, updated, and deleted.  Just like you should defragment your hard drive from time to time to get your files placed on the disk in the most optimal way, you should do the same for the search collection. And optimizing the collection is just a simple procedure call that can be scheduled to be run automatically.  

begin
ctx_ddl.optimize_index('FT_IDCTEXT1','FULL', parallel_degree =>'1');
end;

When I checked my own test instance, I found my collection had a row fragmentation of about 80%

Original fragmentation

After running the optimization procedure, it went down to 0%

After optimizing

The knowledgebase article On Index Fragmentation and Optimization When Using OracleTextSearch or DATABASE.FULLTEXT [ID 1087777.1] goes into detail on how to check your current index fragmentation, how to run the procedure, and then how to schedule the procedure to run automatically.  While the article mentions scheduling the job weekly, Peter says he now is recommending this be run daily, especially on more active systems.

And just as a reminder, be sure to involve your DBA with your WebCenter Content implementation as you go to production and over time.  We recently had a customer complain of slow performance of the application when it was discovered the database was starving for memory.  So it's always helpful to keep a watchful eye on your database.

Wednesday Mar 14, 2012

Improving WebCenter Content Search Performance

If you don't follow the Oracle WebCenter Content Alerts blog, you may have missed the announcement about the 'WebCenter Content: Database Searching and Indexing' webcast happening tomorrow.  It's happening on March 15, 2012 at 16:00 UK / 17:00 CET / 8:00 am Pacific / 9:00 am Mountain / 11:00 am Eastern. For details, go to https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1399682.1

This will cover some great tips on tracing and optimizing search within WebCenter Content.  I plan on attending and learning a few things myself!

[UPDATE 3/22/12]

For those who attended the webcast, I hope you found it helpful and informative.  I certainly did learn a few things myself!  The session was recorded and is available here along with the slide deck.   

Wednesday Dec 21, 2011

Search by extension and Title with a targeted Quick Search

Often when I'm doing a search, I'm doing it based on something in the Title.  But in addition to that, I often know the extension of the original (native) file I'm looking for as well.  I'll know if it's a PowerPoint I'm after...or maybe a zip file. The quickest way for me to do my searching is with the Quick Search in the top right.  So what I've done is created a targeted Quick Search to search by both the extension and the Title.   You can do this either as your own individual quick search or an administrator can set it up as a quick search that all users can use. 

  1. Go to My Content Server -> My Quick Searches.  If you are an administrator, you should be able to create new quick searches defined by admins.

    Quick Search

  2. Click Create New...
  3. If you have the expanded search form enabled, select Search Forms -> Query Builder Form.

    Query Builder Form

  4. Enter a Quick Search Key and Label. 

    Key and Label

  5. In the Query Builder section, click 'show advanced options'. 
  6. In the Query Text box, click 'Modify Query Text and add the following code:

    <$rsMakeFromString('myParms','#s','myParm')$><$loop myParms$><$if myFirst$> <AND> dDocTitle <contains> `<$myParm$>` <$else$><$myFirst=1$>dExtension <starts> `<$myParm$>`<$endif$><$endloop$>



  7. Click Save. 

Now when you do a quick search, you can either select the type of quick search:

select quick search

Or use the key to specify it:

quick search by key

And if you want to search by just the extension, you can leave off the comma and Title parameter.

Thursday Jan 27, 2011

Handling URLs as content

[Read More]

Wednesday Jan 26, 2011

Searching for null values in UCM

[Read More]

Wednesday Sep 29, 2010

Using browser shortcuts to search UCM

[Read More]

Monday Jun 21, 2010

What happened to Search Within?

[Read More]

Tuesday Feb 16, 2010

Setting Substring back as default search operator

For customers that grew up using UCM (aka Content Server) on Verity, one of the default configurations for search was the metadata operator being defaulted to 'Substring'. But in moving to database searching, that default operator switched to 'Matches'. This means the entire word/phrase must be entered to be found.

To go back to the old way of having Substring be default, you can add this configuration entry:

DefaultSearchOperator=hasAsSubstring

Keep in mind that the reason this was changed is because this is an expensive query to make compared to 'Matches'. So depending on the repository size, this may have an impact on the speed of the search results. One other thing to note is it does only apply the default to the free text metadata fields and not the option list fields. They will still be 'Matches' assuming the user will be picking from the list.

UPDATE (07/09/2012):  For setting the default operator for an option list, you can set the configuration flag of:

DefaultNBFieldSearchOperator=beginsWith

In this case setting it to 'Starts' as the default. 

 

Wednesday Feb 10, 2010

Increasing the number of saved queries in UCM

[Read More]
About

Kyle Hatlestad is a Solution Architect in the WebCenter Architecture group (A-Team) who works with WebCenter Content and other products in the WebCenter & Fusion Middleware portfolios. The WebCenter A-Team blog can be found at: https://blogs.oracle.com/ ateam_webcenter/

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today