Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • vaibhav 119 posts 139 karma points
    Aug 22, 2011 @ 14:31
    vaibhav
    0

    Lucene Search for multilingual site

    Hello,

    I have my website in two lenguages i.e English & danish

    Like this....

    EN

    >page1

    >page2

    >page3

    DN

    >Page1

    >Page2

    >Page3

    both are inside the same domain.

    i.e. for english site i use www.xyz.com/en  & for danish site i use www.xyz.com/dn

    I have problems while searching ...

    I have created the search control

    when i search for some word it searches in both the websites & shows the results on the results page of the english site which i dont want....

    (search control is usercontrol made by me)

    I want that if i search in english site then results only from english site should be shown on the results page which is in side english site & if i search in danish site then results only from english site should be shown on the results page which is in side danish site.

  • vaibhav 119 posts 139 karma points
    Aug 22, 2011 @ 15:11
    vaibhav
    0

    Hello,

    I have my website in two lenguages i.e English & danish

    Like this....

    EN

    >page1

    >page2

    >page3

    DK

    >Page1

    >Page2

    >Page3

    both are inside the same domain.

    i.e. for english site i use www.xyz.com/en  & for danish site i use www.xyz.com/dn

    I have problems while searching ...

    I have created the search control

    when i search for some word it searches in both the websites & shows the results on the results page of the english site which i dont want....

    (search control is usercontrol made by me)

    I want that if i search in english site then results only from english site should be shown on the results page which is in side english site & if i search in danish site then results only from danish site should be shown on the results page which is in side danish site.

    I think i have to change the indexing but dont know wat to change ....

    I also have one more problem....

    When i search then always result page of the english site is shown ...but i have created result page for both english & danish sites.

  • Dirk De Grave 4541 posts 6021 karma points MVP 3x admin c-trib
    Aug 22, 2011 @ 15:15
    Dirk De Grave
    0

    you could create two indexes, one for each language on your site and use the correct corresponding searcer when performing your search!

    For example (in ExamineIndex.config):

    <IndexSet SetName="Language1IndexSet" IndexPath="~/App_Data/ExamineIndexes/Language1/" IndexParentId="id1">
        <IndexAttributeFields />
        <IndexUserFields />
        <IncludeNodeTypes />
        <ExcludeNodeTypes />
      </IndexSet>
      <IndexSet SetName="Language2IndexSet" IndexPath="~/App_Data/ExamineIndexes/Language2/" IndexParentId="id2">
        <IndexAttributeFields />
        <IndexUserFields />
        <IncludeNodeTypes />
        <ExcludeNodeTypes />
      </IndexSet>

    Of course, also have to provide index providers and search provider in examineSettings.config. Make sure to use the naming conventions for both indexer and searcher.

     

    Cheers,

    /Dirk

  • vaibhav 119 posts 139 karma points
    Aug 23, 2011 @ 12:01
    vaibhav
    0

    I really dont know how to create different indexes for different languages.... also how to use there searcher while searching ...

    right now for my english site i am using default indixing provided in umbraco ....

    I have creted one usercontrol which passes the word to be searched to xslt & then xslt displays the result ....my xslt is something like this.....

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:stylesheet [
      <!ENTITY nbsp "&#x00A0;">
    ]>
    <xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxml="urn:schemas-microsoft-com:xslt"
      xmlns:examine="urn:examine"
      xmlns:umbraco.library="urn:umbraco.library"
      xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon"
      xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes"
      xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath"
      xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions"
      xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings"
      xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
      exclude-result-prefixes="msxml examine umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">


      <xsl:output method="xml" omit-xml-declaration="yes"/>

      <xsl:param name="currentPage"/>

      <!-- Get the search term from the query string-->
      <xsl:variable name="searchTerm" select="umbraco.library:RequestQueryString('s')" />

      <xsl:template match="/">

        <!-- Check if there's a search term to search on-->
        <xsl:if test="string-length($searchTerm) > 0">

          
          <!-- Get the search results from examine -->
          <!--************************ THIS IS WHERE THE MAGIC HAPPENS *****************************-->
                
          <xsl:variable name="results" select="examine:Search($searchTerm)"/>

          <!--************************ END OF MAGIC ************************************************-->
          
          
          <p>
           &nbsp;&nbsp;&nbsp;&nbsp; Search text:&nbsp;<b>
              <u>
                <xsl:value-of select="$searchTerm"/>
              </u>
            </b>&nbsp;&nbsp;<i>
              <b>
                <xsl:value-of select="count($results//node)"/>
              </b>&nbsp;result(s)
            </i>
          </p>

          <xsl:if test="count($results//node) > 0">

            <!-- there is a result, so show them in the order of best score -->

            <ul>
              <xsl:for-each select="$results//node">
                <xsl:sort select="number(@score)" order="descending"/>

                <li>

                  <!-- add alternating colors -->
    <!--              <xsl:choose>
                    <xsl:when test="position() mod 2 ">
                      <xsl:attribute name="class">secondary-a-5</xsl:attribute>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:attribute name="class">secondary-b-4</xsl:attribute>
                    </xsl:otherwise>
                  </xsl:choose>  -->

                  <!-- Get the URL -->
                  <xsl:variable name="url" select="concat('http://', umbraco.library:RequestServerVariables('SERVER_NAME') , ':' , umbraco.library:RequestServerVariables('SERVER_PORT') ,umbraco.library:NiceUrl(./data[@alias='id']))" />

                  <!-- Create the search result line item-->
          <!--        <a href="{$url}">
                    <span class="title">
                      <xsl:value-of select="./data[@alias='nodeName']"/>
                    </span>
                    <span class="link">
                      <xsl:value-of select="$url"/>
                    </span>
                    <span class="score">
                      <xsl:value-of select="./@score"/>
                    </span>
                  </a> -->
                  <div>
                    <div id="searchTitle"><a href="{$url}"><xsl:value-of select="./data[@alias='nodeName']"/></a> </div> <div id="searchTime"> <!-- <xsl:value-of select="./@score"/> --> </div>
                  </div>
                  <xsl:value-of select="umbraco.library:TruncateString(./data[@alias='content'], 360,'...')" disable-output-escaping="yes"/>
                  <!--<xsl:value-of select = "./data[@alias='content']"/> -->
                  <div id="searchLink">
                    <a href="{$url}"><xsl:value-of select="$url"/></a>
                  </div>
                </li>

              </xsl:for-each>
            </ul>
          </xsl:if>
        </xsl:if>
      </xsl:template>

    </xsl:stylesheet>

  • vaibhav 119 posts 139 karma points
    Aug 24, 2011 @ 09:57
    vaibhav
    0

    I have created indexes for my two languages like this ...

    <IndexSet SetName="ENIndexSet" IndexPath="~/App_Data/ExamineIndexes/EN/" IndexParentId="1165">
    <IndexAttributeFields>
    <add Name="id" />
    <add Name="nodeName" />
    <add Name="updateDate" />
    <add Name="writerName" />
    <add Name="path" />
    <add Name="nodeTypeAlias" />
    <add Name="parentID" />
    </IndexAttributeFields>
    <IndexUserFields />
    <IncludeNodeTypes />
    <ExcludeNodeTypes />
    </IndexSet>

    <IndexSet SetName="DKIndexSet" IndexPath="~/App_Data/ExamineIndexes/DK/" IndexParentId="1624">
    <IndexAttributeFields>
    <add Name="id" />
    <add Name="nodeName" />
    <add Name="updateDate" />
    <add Name="writerName" />
    <add Name="path" />
    <add Name="nodeTypeAlias" />
    <add Name="parentID" />
    </IndexAttributeFields>
    <IndexUserFields />
    <IncludeNodeTypes />
    <ExcludeNodeTypes />
    </IndexSet>


    also the provider & searcher are like this ...

      <add name="ENIndexer" type="UmbracoExamine.UmbracoMemberIndexer, UmbracoExamine"
    indexSet="ENIndexSet"
    supportUnpublished="false"
    supportProtected="true"
    interval="10"
    analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>

    <add name="DKIndexer" type="UmbracoExamine.UmbracoMemberIndexer, UmbracoExamine"
    indexSet="DKIndexSet"
    supportUnpublished="false"
    supportProtected="true"
    interval="10"
    analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/>



           <add name="ENSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" indexSet="ENIndexSet"
    analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" enableLeadingWildcards="true"/>

    <add name="DKSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" indexSet="DKIndexSet"
    analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" enableLeadingWildcards="true"/>

    now can any one help me for searching the data as i dont know how to use this searcher while searching  ....

  • Ismail Mayat 4511 posts 10092 karma points MVP 2x admin c-trib
    Aug 24, 2011 @ 10:28
    Ismail Mayat
    0

    vaibhav,

    You need to use the examine search method with signature SearchContentOnly(string searchText, bool useWildcards, string providerName) and pass in the provider eg ENSearcher

    Regards

    Ismail


  • vaibhav 119 posts 139 karma points
    Aug 24, 2011 @ 10:59
    vaibhav
    0

    Hi Ismail ,

    Can you tell me how can i do this with xslt ..which i have posted above .... or have to do this in the cs file of the usercontrol which i am using.

  • Ismail Mayat 4511 posts 10092 karma points MVP 2x admin c-trib
    Aug 24, 2011 @ 11:08
    Ismail Mayat
    0

    In your xslt you have line

    <xsl:variablename="results"select="examine:Search($searchTerm)"/>

    You need to call the method examine:SearchContentOnly($searchTerm,true(),'ENSearcher') if you are doing english only search and change to DKSearcher if DK.

     

  • vaibhav 119 posts 139 karma points
    Aug 24, 2011 @ 11:35
    vaibhav
    0

    getting error as "Error parsing XSLT file: \xslt\SearchResults.xslt" ...

    may be it is not able to find method ...SearchContentOnly ....

    how to solve this ....

  • vaibhav 119 posts 139 karma points
    Aug 25, 2011 @ 11:00
    vaibhav
    0

    hi,

    I solved the problem ....

    i just changed

    xmlns:examine="urn:examine"
    with
    xmlns:umbraco.examine="urn:umbraco.examine"

    &
    exclude-result-prefixes="msxml examine umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">
    with
    exclude-result-prefixes="msxml umbraco.examine umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">



    after that i used this ...

    <xsl:variablename="results"select="umbraco.examine:SearchContentOnly($searchTerm,true(),'ENSearcher')"/>
    insted of 
    <xsl:variablename="results"select="examine:Search($searchTerm)"/>
    

    thanks....Dirk & Ismail

  • raju 3 posts 23 karma points
    Aug 10, 2012 @ 09:44
    raju
    0

    Lucene search is not working for Chinese langauge character , can anybody help me in this ?

  • Ismail Mayat 4511 posts 10092 karma points MVP 2x admin c-trib
    Aug 10, 2012 @ 10:46
  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies