Nach einzelnem Wort suchen
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
14 Antworten
-
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...
-
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
-
aha
-
getestet, kommt aber bei mir immer nur false zurück...
-
-
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.
-
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
-
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
-
Ergänzung: Und hast Du dazu vielleicht einen guten Lesetipp-Link? Danke Dir!
-
Hallo Stephan
Schau mal hier zu regex:
https://github.com/ziishaned/learn-regex/blob/master/translations/README-de.md#282-dollar
http://blog.weblogie.de/webentwicklung/merkblatt-regular-expressions/
https://danielfett.de/2006/03/20/regulaere-ausdruecke-tutorial/
http://regexrenamer.sourceforge.net/help/regex_quickref.html
Damit solltest du deine Anforderungen ermöglichen können. -
Stimmt, die Links sind sehr hilfreich. Zu eigentlichen Fragen:
um die Groß-/ Kleinschreibung zu ignorireren kann man auch ohne Regex vorgehen. Ninox hat einen Befehl lower().
für eine Ansicht mit Suchfeld wäre die Formel dann:
---
let me:=this;
select DEINETABELLE [contains(lower(TEXT)=me.lower(SUCHFELD))]---
Die Sache mit Haushalt/Haushald ist kompliziert, weil man dann viele Varianten durchlaufen muss. Ich habe leider keine Lösung.
Leo
-
super, danke euch sehr!
-
https://regex101.com/ ist noch ein hilfreicher Link.
Mir hat außerdem extrem geholfen, dass es im RegEx Gruppen gibt und man diese in Ninox adressieren kann. Damit arbeite ich viel und gerne...
Content aside
- vor 2 JahrenZuletzt aktiv
- 14Antworten
- 3260Ansichten
-
1
Folge bereits