Package org.apache.lucene.search

Examples of org.apache.lucene.search.Similarity


    // Initialize similarity
    if ( similarityClass == null ) {
      return Similarity.getDefault();
    }
    else {
      Similarity defaultSimilarity;
      try {
        defaultSimilarity = (Similarity) similarityClass.newInstance();
      } catch (ClassCastException e) {
        throw new SearchException("Lucene similarity does not extend " + Similarity.class.getName() + ": "
            + similarityClassName, e);
View Full Code Here


   */
  private IndexSearcher buildSearcher(SearchFactoryImplementor searchFactoryImplementor) {
    Map<Class<?>, DocumentBuilder<?>> builders = searchFactoryImplementor.getDocumentBuilders();
    List<DirectoryProvider> directories = new ArrayList<DirectoryProvider>();

    Similarity searcherSimilarity = null;
    //TODO check if caching this work for the last n list of classes makes a perf boost
    if ( classes == null || classes.length == 0 ) {
      // empty classes array means search over all indexed enities,
      // but we have to make sure there is at least one
      if ( builders.isEmpty() ) {
View Full Code Here

    batchBackend.initialize( batchBackendConfiguration, progressMonitor, this );
    return batchBackend;
  }

  public Similarity getSimilarity(DirectoryProvider<?> provider) {
    Similarity similarity = dirProviderData.get( provider ).getSimilarity();
    if ( similarity == null ) {
      throw new SearchException( "Assertion error: a similarity should be defined for each provider" );
    }
    return similarity;
  }
View Full Code Here

  private IndexSearcher buildSearcher(SearchFactoryImplementor searchFactoryImplementor) {
    Map<Class<?>, DocumentBuilderIndexedEntity<?>> builders = searchFactoryImplementor.getDocumentBuildersIndexedEntities();
    List<DirectoryProvider> targetedDirectories = new ArrayList<DirectoryProvider>();
    Set<String> idFieldNames = new HashSet<String>();

    Similarity searcherSimilarity = null;
    //TODO check if caching this work for the last n list of indexedTargetedEntities makes a perf boost
    if ( indexedTargetedEntities.size() == 0 ) {
      // empty indexedTargetedEntities array means search over all indexed enities,
      // but we have to make sure there is at least one
      if ( builders.isEmpty() ) {
View Full Code Here

  private void fillSimilarityMapping() {
    for ( DirectoryProviderData directoryConfiguration : dirProviderData.values() ) {
      for ( Class<?> indexedType : directoryConfiguration.getClasses() ) {
        DocumentBuilderIndexedEntity<?> documentBuilder = documentBuildersIndexedEntities.get( indexedType );
        Similarity similarity = documentBuilder.getSimilarity();
        Similarity prevSimilarity = directoryConfiguration.getSimilarity();
        if ( prevSimilarity != null && !prevSimilarity.getClass().equals( similarity.getClass() ) ) {
          throw new SearchException(
              "Multiple entities are sharing the same index but are declaring an " +
                  "inconsistent Similarity. When overrriding default Similarity make sure that all types sharing a same index " +
                  "declare the same Similarity implementation."
          );
View Full Code Here

    public ReentrantLock getDirectoryProviderLock(DirectoryProvider<?> dp) {
      return SearchFactoryBuilder.this.dirProviderData.get( dp ).getDirLock();
    }

    public Similarity getSimilarity(DirectoryProvider<?> provider) {
      Similarity similarity = dirProviderData.get( provider ).getSimilarity();
      if ( similarity == null ) {
        throw new SearchException( "Assertion error: a similarity should be defined for each provider" );
      }
      return similarity;
    }
View Full Code Here

   * @param cfg the search configuration.
   * @return returns the default similarity class.
   */
  private Similarity initSimilarity(SearchConfiguration cfg) {
    String similarityClassName = cfg.getProperty(Environment.SIMILARITY_CLASS);
    Similarity defaultSimilarity;
    if ( StringHelper.isEmpty( similarityClassName ) ) {
      defaultSimilarity =  Similarity.getDefault();
    }
    else {
      defaultSimilarity = PluginLoader.instanceFromName(
          Similarity.class, similarityClassName, ConfigContext.class, "default similarity" );
    }
    log.debug( "Using default similarity implementation: {}", defaultSimilarity.getClass().getName() );   
    return defaultSimilarity;
  }
View Full Code Here

    writer.setMergeFactor(indexConf.getMergeFactor());
    String similarityName = indexConf.getSimilarityName();
    if (similarityName != null) {
      try {
        Class<?> similarityClass = Class.forName(similarityName);
        Similarity similarity = (Similarity) similarityClass.newInstance();
        writer.setSimilarity(similarity);
      } catch (Exception e) {
        throw new IOException("Error in creating a similarty object "
            + similarityName);
      }
View Full Code Here

  private IndexSearcherWithPayload buildSearcher(SearchFactoryImplementor searchFactoryImplementor, Boolean forceScoring) {
    Map<Class<?>, EntityIndexBinding> builders = searchFactoryImplementor.getIndexBindings();
    List<IndexManager> targetedIndexes = new ArrayList<IndexManager>();
    Set<String> idFieldNames = new HashSet<String>();

    Similarity searcherSimilarity = null;
    //TODO check if caching this work for the last n list of indexedTargetedEntities makes a perf boost
    if ( indexedTargetedEntities.size() == 0 ) {
      // empty indexedTargetedEntities array means search over all indexed entities,
      // but we have to make sure there is at least one
      if ( builders.isEmpty() ) {
View Full Code Here

    //TODO cleanup: this logic to select the Similarity is too complex, should likely be done in a previous phase
    final Map<Class<?>, EntityIndexBinding> documentBuildersIndexedEntities = factoryState.getIndexBindings();
    for ( Entry<Class<?>, EntityIndexBinding> entry : documentBuildersIndexedEntities.entrySet() ) {
      Class<?> clazz = entry.getKey();
      EntityIndexBinding entityIndexBinding = entry.getValue();
      Similarity entitySimilarity = entityIndexBinding.getSimilarity();
      if ( entitySimilarity == null ) {
        //might have been read from annotations, fill the missing information in the EntityIndexBinder:
        entitySimilarity = entityIndexBinding.getDocumentBuilder().getSimilarity();
        if ( entitySimilarity != null ) {
          MutableEntityIndexBinding<?> newMapping = buildTypeSafeMutableEntityBinder(
              entityIndexBinding,
              entitySimilarity
          );
          entityIndexBinding = newMapping;
          documentBuildersIndexedEntities.put( clazz, entityIndexBinding );
        }
      }
      IndexManager[] indexManagers = entityIndexBinding.getIndexManagers();
      for ( IndexManager indexManager : indexManagers ) {
        Similarity indexSimilarity = indexManager.getSimilarity();
        if ( entitySimilarity != null && indexSimilarity == null ) {
          indexManager.setSimilarity( entitySimilarity );
        }
        else if ( entitySimilarity != null && ! entitySimilarity.getClass().equals( indexSimilarity.getClass() ) ) {
          throw new SearchException(
              "Multiple entities are sharing the same index but are declaring an " +
                  "inconsistent Similarity. When overriding default Similarity make sure that all types sharing a same index " +
                  "declare the same Similarity implementation."
          );
View Full Code Here

TOP

Related Classes of org.apache.lucene.search.Similarity

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.