Frage

Die Struktur der Tabelle „Testtable“ ist

  1. id int Primärschlüssel

  2. productid int

  3. attributeId int

  4. Wert varchar (250)

Dabei gilt productid die eindeutige ID eines Produkts ist, attributeId ist die eindeutige ID des Attributs eines Produkts, z.B. Größe, Qualität, Höhe, Farbe und ‚Wert‘ ist der Wert für das Attribut

ich habe ein Ergebnis zu filtern. Ich erreiche die Anforderung von dieser Abfrage. Aber ich bin nicht in der Lage, es in einer Abfrage zu machen.

select a.* from dbo.testtable a
where a.attributeId=10 and a.[Value]='Romance'
and productId in
(
    select productId
    from
    dbo.testtable where attributeId =7 and [Value]='Hindi'
)

Sie benötigen Hilfe, um diese Abfrage zu erstellen ..

War es hilfreich?

Lösung

Ich glaube, Sie dies in zwei Schritten zu tun haben:

Schritt 1: Extrakt Produkt-IDs

BooleanQuery query = new BooleanQuery();

query.add(new TermQuery("attributeId", 7), BooleanClause.Occur.MUST); 
query.add(new TermQuery("value", "hindi"), BooleanClause.Occur.MUST); 
TopDocs docs = searcher.search(query, null, searchLimit);

Sie dann die productId aus der Dokumentation extrahieren müssen

Schritt 2: Starten Abfrage

BooleanQuery query = new BooleanQuery();

query.add(new TermQuery("attributeId", 10), BooleanClause.Occur.MUST); 
query.add(new TermQuery("value", "Romance"), BooleanClause.Occur.MUST); 

// build "IN" clause
BooleanQuery pidQuery = new BooleanQuery();
for( long productId : productIds ){
    pidQuery.add(new TermQuery("productId", productId), BooleanClause.Occur.SHOULD); 
}
query.add(pidQuery, BooleanClause.Occur.MUST); 
TopDocs docs = searcher.search(query, null, searchLimit);

Andere Tipps

Sehen Sie in Hibernate Search mit dem Sie mit Semantik von Lucene bietet auf Basis einer Datenbank zu suchen. schauen Alternativ zu luke und herauszufinden, wie lucene Ihre Daten indiziert hat. Spielen Sie mit ihm um und es wird Ihnen helfen lucene Abfragen Rahmen, wie es Ihnen einen tieferen Einblick in lucene Indizierung und Suche gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top