Nach einzelnem Wort suchen

M

Hallo,

gibt es eine Suchfunktion bei der man nach ausschließlich dem suchen kann, was der Eingabe entspricht?

Wenn ich also z.B. nach dem Wort „Haus“ suche, so möchte ich nur die Ergebnisse finden, die auch wirklich „Haus“ und nicht z.B. „Wohnhaus“ oder „Reihenhaus“ beinhalten.

Danke im Voraus

B

gibt es nicht, aber folgendes funktioniert, mußt Du aber entsprechend anpassen:

 

let LEN := length(Suchtext);  -> im Feld Suchtext steht also "Haus"

let POS := index(Text, Suchtext);  -> Feld Text ist der durchsuchende Text

var TXT := substring(TXT, POS - 1, LEN + 1); jetzt wird aus dem durchsuchenden Text der Suchtext extrahiert, dabei ein Zeichen davor und ein Zeichen dahinter

TXT := trim(TXT); -> wenn diese Zeichen davor und dahinter Leerzeichen sind, werden diese abgeschnitten

Auswertung:

if TXT = Suchtext then true else false; -> geht auch kürzer, nur zur Verdeutlichung 

 

geht aber nur, wenn nch dem Text kein Komma, Punkt,... steht. Sonst müßte man das auch noch abklären...

Ninox Profile

Man kann auch RegEx Ausdrücke verwenden. So wäre es dann:

---

testx(Text, "\b" + Suchtext + "\b")

---

Der testx gibt ein Ja/Nein Ergebniss und "\b" kennzeichnet eine Wortgrenze.

Wenn man den Text in eine Tabelle mit dem Feld "Text" sucht dann kann man ein Funktionsfeld sogestallten:

---

let myREG:="\b" + Suchtext + "\b";

join(select Suchtabelle [testx(Text,myREG)].("Datensatz Nr.: "+Nr+"

Text),"

 

")

---

So sollte ein Text mit Datensatsnummer und Texte, die das Suchwort enthalten untereinander geschrieben werden. Theoretisch kann man auch weiter treiben und mit html() den Suchtext markieren.

 

Leo

 

B

aha 👍

B

getestet, kommt aber bei mir immer nur false zurück...

Ninox Profile

Bildschirmfoto 2018-11-11 um 15.21.44

M

Okay, vielen Dank euch beiden, das Regex erklärt auch immerhin einiges.

Mein weiteres Problem besteht wohl darin, dass ich eine Tabelle habe mit vielen Begriffen, welche ich schnell nach Anzahl sortieren muss.

Also dass ich z.B. wirklich nur die Auswahl einer Spalte mit „Haus“ eingezeigt bekommen möchte, jedoch aber auch zu jeder Zeit nach „Garten“, „Haustür“ oder „Wohnung“ schnell suchen kann.

Sind halt sehr viele Begriffe, welche ich grundsätzlich häufig filtern müsste und es immer recht mühsälig ist, manches unbrauchbares herauszuklamüsern.

Ninox Profile

Da würde ich das Designelement "Ansicht" verwenden. 

die Formel dafür:

---

let myREG:="\b" + Suchtext + "\b";

select 'DEINE TABELLE' [testx('DEIN TEXTFELD',myREG)]

---

Es werden dann nur die gefilterten Datensätze angezeigt. 

Leo

Ninox Profile

Hallo Leo,

ich muss sagen, dass ich gerade RegEx gefunden habe und mir das gedanklich ganz neue Möglichkeiten eröffnet ;)

Weißt Du zufällig, wie ich die Suche oben so gestalten könnte, dass die Groß- und Kleinschreibung im Suchtext egal ist? Also “haus” wirft auch “Haus” aus?

Und es müsste doch auch möglich sein etwas zu suchen, auch wenn 1-2 Character falsch geschrieben sind, oder? Um bei dem Beispiel zu bleiben: “Haushald” liefert auch “Haushalt” zurück - komisches Beispiel, aber ich glaube es wird klar ;)

Danke Dir und schönen Advent!

Grüße

Stephan

Ninox Profile

Ergänzung: Und hast Du dazu vielleicht einen guten Lesetipp-Link? Danke Dir!

1 2
Antworten