Lucene limitação de caracteres em busca com aspas

0 respostas
S

Pessoal,

Estou com o seguinte problema, ao fazer uma busca com aspas ex: “Americanas.com comemora 11 anos com ações digitais” não encontra nada, porem se diminuo a quantidade de caracteres por ex: “Americanas.com comemora 11 anos com” encontra. Existe alguma limitação na quantidade de caracteres de uma busca com aspas?

Para indexar o conteúdo utilizo um scheduler, segue o método que é chamado para indexação

public void portalProxxima() throws Exception {
		FullTextSession fullTextSession = Search.getFullTextSession(HibernateUtil.getSession());
		fullTextSession.setFlushMode(FlushMode.MANUAL);
		fullTextSession.setCacheMode(CacheMode.IGNORE);
		Transaction tx = fullTextSession.beginTransaction();

		// Executa view materializada  
		HibernateUtil.getSession().createSQLQuery("{call DBMS_MVIEW.REFRESH('MVIEW_PESQUISA','C')}")  
            .addSynchronizedEntityClass(ProxximaPesquisaMView.class).executeUpdate();  
			
		System.out.println("INICIO BUSCA CONTEUDO NAO INDEXADO" + new Date());

		Criteria criteria = HibernateUtil.getSession().createCriteria(ProxximaPesquisaMView.class).addOrder(Order.desc("data"));
		criteria.setMaxResults(maxResults);
		
		criteria.setFirstResult(maxResults * (pageNumber - 1));

		ScrollableResults results = criteria.setFetchSize(batchSize).scroll(ScrollMode.FORWARD_ONLY);
		System.out.println("FIM BUSCA CONTEUDO NAO INDEXADO " + new Date());

		System.out.println("INICIO INDEXACAO COM BATCH_SIZE = " + batchSize + " " + new Date());
		System.out.println("MAX_RESULTS = " + maxResults);
		System.out.println("PAGE_NUMBER = " + pageNumber);
		Integer index = 0;
		Integer batch = 0;
		while (results.next()) {
			try{
				index++;
				ProxximaPesquisaMView pesquisaMView = (ProxximaPesquisaMView) results.get(0);
	
				fullTextSession.index(results.get(0)); // index each element
				if (index % batchSize == 0) {
					batch++;
					System.out.println("\t\t Batch FlushToIndexes " + batch + " " + new Date());
					fullTextSession.flush(); // apply changes to indexes
					fullTextSession.clear(); // clear since the queue is processed
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		tx.commit();

		System.out.println("FIM INDEXACAO " + new Date());
	}

Segue a entity

package br.com.meioemensagem.entity.view;

import java.util.Comparator;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.Sort;
import org.hibernate.search.annotations.Boost;
import org.hibernate.search.annotations.DateBridge;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.FullTextFilterDef;
import org.hibernate.search.annotations.FullTextFilterDefs;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Resolution;
import org.hibernate.search.annotations.Store;

import br.com.meioemensagem.entity.mmonline.BlogMm;
import br.com.meioemensagem.hibernate.filter.PesquisaMViewCategoriaLuceneFilter;
import br.com.meioemensagem.hibernate.filter.PesquisaMViewTipoLuceneFilter;
import br.com.meioemensagem.hibernate.filter.ProxximaPesquisaMViewDataLuceneFilter;
import br.com.meioemensagem.util.HtmlUtil;
import br.com.meioemensagem.util.XmlUtil;

import com.hibernatewebpaginator.util.StringUtil;

@Entity
@Indexed
@FullTextFilterDefs( {
		@FullTextFilterDef(name = "tipo", impl = PesquisaMViewTipoLuceneFilter.class),
		@FullTextFilterDef(name = "dataAno", impl = ProxximaPesquisaMViewDataLuceneFilter.class),
		@FullTextFilterDef(name = "categoria", impl = PesquisaMViewCategoriaLuceneFilter.class)})
@Table(name = "MVIEW_PESQUISA3, schema = "MMONLINE")
public class ProxximaPesquisaMView implements java.io.Serializable {

	private static final long serialVersionUID = 1L;

	public static final int MAX_RESULTS = 5;

	// Lista de stopWords of http://btd.egc.ufsc.br/pdf/[telefone removido].pdf
	public static final String[] stopWords = new String[] { "", " ", "de", "é",
			"As", "nos", "eu", "depois", "eles", "a", "com", "Dos", "",
			"também", "sem", "estão", "o", "não", "como", "está", "",
			"mesmo", "você", "que", "uma", "mas", "seu", "pelo", "aos",
			"tinha", "e", "os", "Foi", "sua", "pela", "ter", "foram", "do",
			"no", "Ao", "ou", "até", "seus", "essa", "da", "se", "Ele",
			"ser isso quem num", "em", "na", "das", "quando ela nas nem", "um",
			"por", "tem", "muito", "entre", "me", "suas", "para", "mais", "à",
			"", "era", "esse", "meu", "qual", "essas", "tu", "minhas",
			"nossa", "estes", "isto", "será", "esses", "te", "teu", "nossos",
			"estas", "aquilo", "nós", "pelas", "vocês", "tua", "nossas",
			"aquele", "havia", "tenho", "este", "vos", "teus", "dela",
			"aquela", "seja", "lhe", "fosse", "lhes", "tuas", "delas",
			"aqueles pelos", "deles", "dele", "meus", "nosso", "esta",
			"aquelas elas", "numa", "têm", "minha", "às" };

	private BlogMm blogMm;
	private String id;
	private String resumo;
	private String conteudoHtml;
	private String titulo;
	private Date data;
	private String tipo;
	private Integer qtdLido;
	private Integer qtdRecomendado;
	private Long categoria;
	private String path;

	@Id
	@DocumentId
	@Column(name = "ID")
	public String getId() {
		return this.id;
	}

	public void setId(String id) {
		this.id = id;
	}

	@Field(index = Index.TOKENIZED, store = Store.NO)
	@Column(name = "CONTEUDO_HTML")
	public String getConteudoHtml() {
		return conteudoHtml;
	}

	public void setConteudoHtml(String conteudoHtml) {
		this.conteudoHtml = conteudoHtml;
	}

	@Boost(1)
	@Field(index = Index.TOKENIZED, store = Store.YES)
	@Column(name = "TITULO")
	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	@Field(index = Index.TOKENIZED, store = Store.YES)
	@Column(name = "RESUMO")
	public String getResumo() {
		return this.resumo;
	}

	public void setResumo(String resumo) {
		this.resumo = resumo;
	}

	@Field(index = Index.UN_TOKENIZED, store = Store.YES)
	@DateBridge(resolution = Resolution.DAY)
	@Column(name = "DATA")
	@Temporal(TemporalType.TIMESTAMP)
	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	@Field(index = Index.UN_TOKENIZED, store = Store.YES)
	@Column(name = "TIPO")
	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	@Field(index = Index.UN_TOKENIZED, store = Store.YES)
	@Sort(comparator = PesquisaMViewQtdLidoComparator.class)
	@Column(name = "QTD_LIDO")
	public Integer getQtdLido() {
		return qtdLido;
	}

	public void setQtdLido(Integer qtdLido) {
		this.qtdLido = qtdLido;
	}

	@Field(index = Index.UN_TOKENIZED, store = Store.YES)
	@Sort(comparator = PesquisaMViewQtdRecomendadoComparator.class)
	@Column(name = "QTD_RECOMENDADO")
	public Integer getQtdRecomendado() {
		return qtdRecomendado;
	}

	public void setQtdRecomendado(Integer qtdRecomendado) {
		this.qtdRecomendado = qtdRecomendado;
	}

	@Field(index = Index.UN_TOKENIZED, store = Store.YES)
	@Column(name = "CATEGORIA")
	public Long getCategoria() {
		return categoria;
	}

	public void setCategoria(Long categoria) {
		this.categoria = categoria;
	}
	
	@Field(index = Index.UN_TOKENIZED, store = Store.YES)
	@Column(name = "PATH")
	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}
}
Criado 10 de setembro de 2010
Respostas 0
Participantes 1